有没有办法继承迭代器的东西

时间:2014-02-21 18:03:21

标签: c++ inheritance

这是容器的模板,其大小有限制。

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某处的东西?

1 个答案:

答案 0 :(得分:1)

一般不用于“东西”,但对于迭代器,有boost::iterator_facade and boost::iterator_adapter。前者使得从头开始编写迭代器变得更容易,后者对于在现有迭代器上构建是很方便的。