이것은 현재 얻은 코드이지만 불완전한 variable 유형의 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;
};
가능한 경우 컨테이너 클래스에서 반복기 정의를 유지하고 싶습니다. 모든 답장을 보내 주셔서 감사합니다.
감사합니다. 문제의 원인이되는 줄은 알고 있습니다. 나는 그것에 대한 '일반적인'해결 방법이 있는지 궁금해했다. 그것은 인라인 정의를 제외하고는 보이지 않습니다. –