具有共享指针的迭代器会产生意外结果

时间:2017-12-11 20:01:46

标签: c++ c++11

我在实施operator++时遇到了问题。

当我运行它时,它会正确打印第一个元素,然后打印错误的字符。

class iterator
{
public:
    iterator(shared_ptr<T> ptr) : ptr_(ptr) { }

    iterator(T* ptr)  {
        shared_ptr<T> temp = shared_ptr<T>(ptr);
        ptr_ = temp;
    }

    ~iterator(){
        ptr_ = nullptr;
    }

    iterator operator++() {


        ptr_ = shared_ptr<T>(ptr_.get()+1);

        return *this;
    }

    iterator operator++(int) {
          iterator i = ptr_;
        ptr_ = shared_ptr<T>(ptr_.get()+1);

        return i;
    }
    T& operator*() { return *(ptr_.get()); }

private:
    shared_ptr<T> ptr_;
};

0 个答案:

没有答案