无法在C ++中调用const引用参数的方法

时间:2015-03-11 13:29:38

标签: c++ function class methods const

class A
{
public:
    A(){};
    ~A(){};
    void method(){};

};

void call(const A &a)
{
    a.method();   // I cannot call this method here if I use "const" but I can call it if not using "const"
}

int main()
{
    A a;
    call(a);
    return 0;
}

在这种情况下,错误是:“passing const A as this argument of void A::method() discards qualifiers [-fpermissive]|

在函数call中,如果我使用const,我会收到错误,但是如果我摆脱它,它就会起作用。

任何人都能为我解释一下吗?

1 个答案:

答案 0 :(得分:18)

您不能通过const引用调用非const成员函数。您可以通过使成员函数const

来解决此问题
void method() const {};
              ^^^^^

这表明调用成员不会改变在 * 上调用的对象

*从概念上讲。在实践中,它可以改变标记为mutable

的成员