gpt4 book ai didi

c++ - 在运算符重载中调用函数?

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:49 25 4
gpt4 key购买 nike

我有一个A类,

class A{

private:
int num;
public:
A(int n){ num = n; };
int getNum(){
return num;
}
A operator+(const A &other){
int newNum = num + other.getNum();
return A(newNum);
};
};

为什么 other.getNum() 会报错?我可以很好地访问其他 (other.num) 中的变量,但似乎我永远无法使用任何其他函数。

我得到的错误是

Invalid arguments: Candidates are int getNum().

我可以写 int test = getNum() 但不能写 int test = other.getNum(),但我几乎可以肯定我可以调用 other.getNum() 不知何故。

我是不是忽略了什么?

最佳答案

其他标记为常量。因此,只能在其上调用 const 方法。使其他非常量或使 getNum 成为 const 方法。在这种情况下,使 getNum 成为常量是可行的方法。

您可以在 this 上调用 getNum 的原因是因为这不是 const。使方法成为常量有效地使 this 指针成为常量。

关于c++ - 在运算符重载中调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26406554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com