2011-02-02 212 views
1
//arrayList.h 
template<class T> 
class arrayList{ 
public: 
    // constructor, copy constructor and destructor 
    arrayList(int initialCapacity = 10); 
    arrayList(const arrayList<T>&); 
    ~arrayList(); 
    // iterators to start and end of list 
    class iterator; 
    class seamlessPointer; 
    seamlessPointer begin(); 
    seamlessPointer end() ; 
    protected: 
     T* position; 
    }; // end of iterator class 

protected: 
    T* element; 
    int arrayLength; 
    int listSize; 
}; 


//main.cpp 


int main() { 

...........嵌套迭代器錯誤

sort(dict.begin, dict.end(),compare_nocase); //// 
    return 0; 
} 

兩個錯誤是:

..\src\test.cpp: In function 'int main()': 
..\src\test.cpp:50:44: error: no matching function for call to 'sort(<unresolved overloaded function type>, arrayList<std::basic_string<char> >::seamlessPointer, bool (&)(std::string, std::string))' 

..\src\/arrayList.h: In member function 'arrayList<T>::seamlessPointer arrayList<T>::end() [with T = std::basic_string<char>]': 
..\src\test.cpp:50:28: instantiated from here 
..\src\/arrayList.h:114:3: error: 'arrayList<T>::seamlessPointer::seamlessPointer(T*) [with T = std::basic_string<char>]' is private 
..\src\/arrayList.h:49:44: error: within this context 

爲什麼我得到這些錯誤?

編輯

的問題就解決了。由於

回答

3

我認爲,其中一個問題是,你寫的

sort(dict.begin(), dict.end(),compare_nocase); 

sort(dict.begin, dict.end(),compare_nocase); 

代替(注意:dict.begin後括號)

沒有編譯代碼自己我不確定是否還有其他潛在的東西。如果我找到其他東西,我會繼續尋找並更新這個答案。

編輯:我注意到,您的seamlessPointer類不標註任何的其成員函數public,這將使任何使用他們的編譯時錯誤。這可能至少是你得到的其他錯誤的部分原因。

+0

我解決了這個問題。但是還有更多的錯誤。 – Sean 2011-02-02 05:28:43

2

對於第二個錯誤,它看起來像你剛纔省略了seamlessPointer類中的public:訪問說明符。請記住,C++中的類成員默認是私有的,因此其餘的構造函數或成員函數都不可用於其他代碼。