如何重载引用运算符?

jax*_*jax 0 c++ class

如何重新设置解除引用运算符?宣言会是什么样子?我正在创建一个列表类,但我在解除引用运算符时遇到问题.

这是我重载dereference运算符的函数

template <typename T>
T List_Iterator<T>::operator *(){
    return current_link->value;
}
Run Code Online (Sandbox Code Playgroud)

这是我的迭代器类中的数据成员

private:
      /* Data Members */
    Link<T>* current_link;
Run Code Online (Sandbox Code Playgroud)

这是我的链接类

protected:
    T value;
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 6

您应该返回引用,而不是副本:

T& List_Iterator<T>::operator *() { .... }
Run Code Online (Sandbox Code Playgroud)

否则语义会令人困惑:您无法修改"取消引用"的对象.