C++ 从const对象调用非const成员函数而不使用它,为什么会出错?
在g++中运行以下代码将导致以下错误: 错误:将“const A”作为“this”参数传递将丢弃限定符[-fppermissive] 我们在哪里使用此 fpermissive表示代码不一致。C++ 从const对象调用非const成员函数而不使用它,为什么会出错?,c++,gcc,C++,Gcc,在g++中运行以下代码将导致以下错误: 错误:将“const A”作为“this”参数传递将丢弃限定符[-fppermissive] 我们在哪里使用此 fpermissive表示代码不一致。 本标准在何处规定这是一个错误?本标准涵盖了本标准中的。具体参见示例2,其中(部分)说明: 调用y.g()的格式不正确,因为y是const和s::g()是一个非常量成员函数 应用于代码时,等效语句为: 调用a.f()的格式不正确,因为a是const和a::f()是一个非常量成员函数 更清楚地说:A::f
本标准在何处规定这是一个错误?本标准涵盖了本标准中的
。具体参见示例2,其中(部分)说明:
调用y.g()
的格式不正确,因为y
是const
和s::g()是一个非常量成员函数
应用于代码时,等效语句为:
调用a.f()
的格式不正确,因为a
是const
和a::f()是一个非常量成员函数
更清楚地说:A::f()
是非常量的,因为它缺少const
限定;f()
是否为合法常量函数(如果添加了const
限定条件)并不相关
也许你真正感兴趣的是[class.this]的第一部分,它指出关键字this
在每个非静态成员函数中都有意义,无论该函数中是否使用过this
。每次调用类方法时都使用this
。如果需要解决方案,请将f
限定为const
->void f()const{}
struct A{
void f(){};
};
int main(){
const A a;
a.f();
return 0;
}