无法分配给重载的取消引用(*)运算符

Cannot assign to overloaded dereference (*) operator

本文关键字:引用 运算符 取消 分配 重载      更新时间:2023-10-16

我为模板类重载了解引用运算符

 template <class T> class Node {
 public:
     T *pointer;
     T operator*() { return *pointer; }
 };

我希望能够在主目录中写入指针:

Node<int> n;
*n = 33;

但我得到了这个错误:

lvalue required as left operand of assignment

我应该如何重载此运算符才能写入指针?

只需将其作为返回类型T&即可。那么你就有了一个左值。现在的问题是,您返回的是指向的对象的副本。