kok*_*ing 14 c++ iterator operator-overloading
有没有办法实现operator->,而不仅仅是operator*.要使以下代码有效:
Iterator<value> it = ...
i = (*it).get();
i = it->get(); // also works
Run Code Online (Sandbox Code Playgroud)
我们说值类型有方法get.当Iterator实现如下:
template<T> class Iterator {
T operator*() { return ... }
T operator->() { return ... }
}
Run Code Online (Sandbox Code Playgroud)
这里......是获得正确T对象的实现.
不知何故,当我以这种方式实现它时,它将无法工作.我想我误解了一些事情.
Mik*_*our 19
operator-> 应该返回一个指针:
T * operator->();
T const * operator->() const;
Run Code Online (Sandbox Code Playgroud)
operator* 如果要将其用于修改,则应返回引用:
T & operator*();
T operator*() const; // OR T const & operator*() const;
Run Code Online (Sandbox Code Playgroud)
看起来很奇怪,因此您想要返回一个指向T的指针:
T * operator->() { return &the_value; }
Run Code Online (Sandbox Code Playgroud)
或指向const的指针。
| 归档时间: |
|
| 查看次数: |
8344 次 |
| 最近记录: |