【问题标题】:Cannot assign to overloaded dereference (*) operator无法分配给重载的取消引用 (*) 运算符
【发布时间】:2013-12-19 16:48:40
【问题描述】:

我为我的模板类重载了取消引用运算符:

 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

我应该如何重载这个操作符才能写入指针?

【问题讨论】:

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


    【解决方案1】:

    只要给它T&amp; 作为返回类型。然后你有一个左值。现在的问题是您正在返回指向对象的副本。

    【讨论】:

    • 好的,这行得通,我只是没有为指针分配内存,现在它可以与 T& 一起使用
    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多