无法分配给重载的dereference(*)运算符

时间:2013-12-03 14:52:11

标签: c++ templates pointers overloading operator-keyword

我的模板类重载了dereference运算符:

 template <class T> class Node {

 public:
     T *pointer;
     T operator*() { return *pointer; }
 };

我希望能够写入main中的指针:

Node<int> n;
*n = 33;

但是我收到了这个错误:

lvalue required as left operand of assignment

如何重载此运算符以便能够写入指针?

1 个答案:

答案 0 :(得分:10)

只需将T&作为返回类型。然后你有一个左值。现在的问题是你要返回指向的对象的副本。