C++ 向量迭代器重写运算符->;

C++ 向量迭代器重写运算符->;,c++,C++,我必须做家庭作业来制作我自己的抽象类向量。这个向量应该有迭代器。我将迭代器作为向量的公共部分。这是我的迭代器代码: class iterator { friend class Vector; Vector* v_; int position_; iterator(Vector* v,int position) : v_(v), position_(position) {} public: iterator() :

我必须做家庭作业来制作我自己的抽象类向量。这个向量应该有迭代器。我将迭代器作为向量的公共部分。这是我的迭代器代码:

class iterator {
    friend class Vector;
    Vector* v_;
    int position_;

    iterator(Vector* v,int position)
    : v_(v),
      position_(position)
    {}

public:

    iterator()
    : v_(0),
      position_(0)
    {}

    iterator& operator++() {// pre
        position_++;
        return *this;
    }

    iterator operator++(int) {//post
        iterator res=*this;
        position_++;
        return res;
    }

    T& operator*() {
        return v_->buffer_[position_];
    }

    T* operator->() {
        return &buffer_[position_];
    }

    bool operator==(const iterator& other) const {
        return position_ == other.position_;
    }

    bool operator!=(const iterator& other) const {
        return !operator==(other);
    }
};
我的问题是操作符->的定义是否正确


谢谢

我相信您确实需要一个稍加修改的定义,以获取向量当前位置的值,即,
返回(*v_)[position_])
如果您重载了向量类的
操作符[]
。否则,为了访问向量的
缓冲区
,必须先解除对向量的引用,才能访问缓冲区,即
返回&(v_uu->buffer[position_u])

如果它不能按编写的方式编译,那么它显然是不正确的(当您在
操作符->
的定义中使用它时,范围中没有
缓冲区->
;也许您的意思是
v_>>缓冲区-
?)想知道您的代码是正确的吗?试试看!制作一个使用它的小测试程序,看看它是否能给你预期的结果。这只是代码的一部分:)如果你能在一个失败的小测试中向我们展示你的代码,通常比给我们一个类并告诉我们玩“发现错误”更有用。我想主要的一点是你必须编写&(缓冲区)_[位置])或者简单地说(缓冲区+位置),我的意思是如果一开始有任何问题