如何重新设置取消引用运算符?宣言会是什么样子?我正在创建一个列表类,但我在解除引用运算符时遇到问题。
这是我重载引用运算符的函数
template <typename T>
T List_Iterator<T>::operator *(){
return current_link->value;
}
这是我的迭代器类中的数据成员
private:
/* Data Members */
Link<T>* current_link;
这是我的链接类
protected:
T value;
答案 0 :(得分:6)
您应该返回引用,而不是副本:
T& List_Iterator<T>::operator *() { .... }
否则语义会令人困惑:您无法修改“取消引用”的对象。
答案 1 :(得分:0)
您也可以按地址退货。写a->b
比(*a).b
更容易:
T* operator->() {
return ¤t_link->value;
}
你肯定需要一个你的迭代器的const版本,它基本上和第一个版本一样,使用“解除引用”运算符的const
版本。