有没有一种方法可以实现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/

10-11 18:55
查看更多