来自Software Engineering Stack Exchange的
This question was migrated,因为可以在Stack Overflow上进行回答。
Migrated 5年前。
我有A班
为什么
我得到的错误是类似的东西
无效的参数:候选人是int getNum()。
我可以写
我在俯视什么吗?
Migrated 5年前。
我有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
)中的变量,但是看来我永远无法使用其他任何函数。我得到的错误是类似的东西
无效的参数:候选人是int getNum()。
我可以写
int test = getNum()
但不能写int test = other.getNum()
,但是我几乎可以确定我能够以某种方式调用other.getNum()
。我在俯视什么吗?
最佳答案
其他标记为const。因此,只能在其上调用const方法。使其他非const或使getNum
为const方法。在这种情况下,使getNum
成为常量是可行的方法。
您可以在getNum
上调用this
的原因是因为它不是const。有效地使方法成为const会使this指针成为const。
关于c++ - 在运算符重载中调用函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26406554/
10-10 02:34