【发布时间】:2012-02-18 22:27:40
【问题描述】:
有没有办法实现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 对象的实现。
当我以这种方式实现它时,它会以某种方式不起作用。我想我误会了什么。
【问题讨论】:
-
你也可以在这里找到一个例子:boost.org/doc/libs/1_48_0/boost/smart_ptr/shared_ptr.hpp
-
Operator overloading的可能重复
-
特别是阅读Mike链接到的问题中"Common operators to overload"的“指针类类型的运算符”,密切关注
operator->的签名。
标签: c++ iterator operator-overloading