小编Hyb*_*sis的帖子

STL迭代器继承:'value_type'没有命名类型

我很难理解这个错误来自哪里:

error: ‘value_type’ in ‘struct std::iterator_traits<sha::Vector<int>::h_iterator>’ does not name a type
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个std::vector包装器并继承迭代器.我不明白为什么编译器无法推断'value_type'或'difference_type'.

这是我的班级定义:

  template <typename T>
  class Vector
  {
    public:
    explicit Vector(std::initializer_list<T> init) : data(init) {}
    ~Vector() {}

  class h_iterator : std::iterator<std::random_access_iterator_tag, T>
  {
    public:
      h_iterator(typename std::vector<T>::iterator it,
                 Vector<T>* owner) :
        it(it), owner(owner) {}

      T operator *() const { return *it; }
      const h_iterator &operator ++() { ++it; return *this; }
      h_iterator operator ++(int) { h_iterator copy(*this); ++it; return copy; }
      const h_iterator &operator --() { --it; return …
Run Code Online (Sandbox Code Playgroud)

c++ templates iterator stl value-type

0
推荐指数
1
解决办法
260
查看次数

标签 统计

c++ ×1

iterator ×1

stl ×1

templates ×1

value-type ×1