有没有一种方法可以实现operator->,而不仅是operator *。要使以下代码正常工作:
Iterator<value> it = ...
i = (*it).get();
i = it->get(); // also works
我们说值类型具有方法get。
当实现Iterator时,如下所示:
template<T> class Iterator {
T operator*() { return ... }
T operator->() { return ... }
}
这里是实现正确的T对象的一种实现。
当我以这种方式实现它时,它不起作用。我想我误会了。
最佳答案
operator->
应该返回一个指针:
T * operator->();
T const * operator->() const;
如果要使用
operator*
进行修改,应返回一个引用:T & operator*();
T operator*() const; // OR T const & operator*() const;
关于c++ - 如何实现operator->的迭代器类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9007775/