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

标签 c++ templates pointers overloading operator-keyword

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

 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

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

最佳答案

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

关于c++ - 无法分配给重载的取消引用 (*) 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20354375/

相关文章:

c++ - 在 C++ 中访问静态类变量?

c++ - 如何使用可变参数模板在 C++11 中生成左关联表达式(也称为左折叠)?

没有指针的c++ vector

c++ - Catch2 cmake函数 'catch_discover_tests()'在构建时不起作用

c++ - 恢复磁盘支持哪个 Windows 子系统

C++ 为特定模板特化添加重载方法

c++ - 从函数返回对指针的引用与返回指针相同?

C++:改变指针字符串的值

c++ - 对任意值类型的操作

c++ - 尝试理解模板和名称查找