【发布时间】:2013-04-17 04:21:59
【问题描述】:
我有这个简单的课程
class foo {
public:
void func() const;
void func2();
};
void foo::func() const {}
void foo::func2() {}
int main() {
const foo f;
f.func();
f.func2();
}
当我尝试编译时,我收到以下消息:
错误:将“const foo”作为“void foo::func2()”的“this”参数传递会丢弃限定符 [-fpermissive]
我了解 const 对象的非 const 成员的使用,我的问题是 'this' 指针用作 func2 的参数?
【问题讨论】:
-
将
const foo f;更改为foo f,“f.func2()”应该可以正常编译。否则,将 func2() 更改为“const”也应该可以解决问题。无论哪种方式,任何时候调用对象的方法时,都会传递一个“this”指针。由于您声明了 object f "const",并且由于 func2() 是非 const ...编译器在抱怨。
标签: c++