来自Software Engineering Stack Exchange的

This question was migrated,因为可以在Stack Overflow上进行回答。
                            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