我有一个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()
。
我忽略了什么吗?
答案 0 :(得分:5)
其他是标记为const。因此,只能在其上调用const方法。要么使其他非const或使getNum
成为const方法。在这种情况下,使getNum
const成为可行的方法。
您可以在getNum
上调用this
的原因是因为这不是常量。使方法const有效地使这个指针成为常量。