2014-02-21 2 views
1

크기에 제한이있는 컨테이너의 템플릿입니다.반복자 항목을 상속하는 방법이 있습니까

template <class T, int MAXSIZE> 
class svector { 

class iterator : public std::iterator<std::input_iterator_tag, value_type> { 
public: 
    iterator(T* cptr); 
    iterator(const iterator& mit); 
    bool operator==(const iterator& rhs) const; 
    bool operator!=(const iterator& rhs) const; 
    T operator*(); 
    iterator& operator++(); 
    iterator operator++(int); 

protected: 
    T* eleptr; 
}; 

svector(); 
svector(const svector& vec); 
virtual ~svector(); 
svector& operator=(const svector& rhs); 
iterator begin(); 
iterator end(); 

// more 
}; 

보시다시피 std :: iterator를 서브 클래 싱하는 반복기가 있습니다. 그러나이 "마커"클래스에서 상속받을 수는 없으며 여기 을 모두 용감하게 구현했습니다. 거기에 STL 어딘가에서 물건을 상속의 방법이 있나요?

+0

짧은 대답은 : –

+0

아니요, 당신이 빌드하는 컨테이너마다 다를 것이기 때문에 * 기능 *을 상속받을 수 없습니다. – Brian

+2

typedef T * iterator and your done done –

답변

1

일반적으로 "stuff"가 아니지만 이터레이터의 경우에는 boost::iterator_facade and boost::iterator_adapter이 있습니다. 전자는 반복자를 처음부터 작성하는 것을 더 쉽게 만들어 주며, 후자는 기존 반복자를 작성하는 데 편리합니다.

관련 문제