這是一個現在得到的代碼,但由於一個不完整的變量類型container :: iterator錯誤,它不能編譯。該類和迭代器仍然非常簡單,因爲我想弄清楚如何組織我的代碼。爲什麼我得到一個不完整的類型錯誤以及如何解決它?
template <typename T> class container {
using size_type = std::size_t;
using pointer = T*;
using const_pointer = const T*;
public:
class iterator;
container (size_type n=0): data {n>0 ? new T[n]:nullptr}, size {n>0 ? n:0}{};
container (iterator begin, iterator end){};
~container(){ delete[] data; };
private:
pointer data;
size_type size;
};
template <typename T> class container<T>::iterator {
public:
iterator (pointer p): current {p} {};
iterator& operator++(){ current++; return *this; };
iterator& operator--(){ current--; return *this; };
reference operator*(){ return *current; };
bool operator== (const iterator& b) const { return current == b.current; };
bool operator!= (const iterator& b) const { return current != b.current; };
private:
pointer current;
};
我想盡可能保持容器類的迭代器定義。感謝您的回覆。
謝謝,我知道這是導致問題的線路。我想知道是否有一個「常規」的解決方法。除了內聯定義,它似乎不是。 –