c++ - 重载取消引用运算符

标签 c++ operator-overloading

我正在尝试重载取消引用运算符,但编译以下代码会导致错误 'initializing' : cannot convert from 'X' to 'int':

struct X {
    void f() {}
    int operator*() const { return 5; }
};

int main()
{
    X* x = new X;
    int t = *x;
    delete x;
    return -898;
}

我做错了什么?

最佳答案

您应该将取消引用运算符应用于类类型。在你的代码中 x 有一个指针类型。写入以下内容:

int t = **x;

int t = x->operator*();

关于c++ - 重载取消引用运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2506085/

相关文章:

c++ - 在 C++ 中使用对数实现运算符重载

c++ - 模板整数参数构造函数

c++ - GLSL 光照数学一团糟,找不到错误

c++ - 在一个命令中使用 2 个重载运算符会导致错误

c++ - 从同一个类的成员函数返回一个对象

c++ - 使用 "using"声明隐藏基类方法对赋值运算符不起作用

c++ - 用于引用分配的运算符重载

php - 我可以解密通过 PHP 加密的 C++ 数据吗?

c++ - 为什么 “alignment”在32位和64位系统上相同?

C++模板特化方法定义