在操作员超载中调用函数?

时间:2014-10-16 07:14:23

标签: c++ class overloading

我有一个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()

我忽略了什么吗?

1 个答案:

答案 0 :(得分:5)

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

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