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
,我会收到错误,但是如果我摆脱它,它就会起作用。
任何人都能为我解释一下吗?
答案 0 :(得分:18)
您不能通过const引用调用非const成员函数。您可以通过使成员函数const
:
void method() const {};
^^^^^
这表明调用成员不会改变在 * 上调用的对象
*从概念上讲。在实践中,它可以改变标记为mutable