Unable to assign overloaded dereference operator (*)

I overloaded the dereference operator for my template class:

 template <class T> class Node {

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

I want to write a pointer basically:

Node<int> n;
*n = 33;

But I get this error:

lvalue required as left operand of assignment

How do I overload this statement so that it can write a pointer?

+4
source share
1 answer

Just enter T&as the return type. Then you have an lvalue. The problem is that you are returning a copy of the object that it points to.

+10
source

All Articles