我在实施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_;
};