【发布时间】:2016-06-13 16:20:05
【问题描述】:
这是一个暂时得到的代码,但由于不完整的变量类型 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;
};
如果可能,我希望将迭代器定义保留在容器类之外。感谢您的任何回复。
【问题讨论】:
标签: c++ incomplete-type