我在下面有一个简单的示例,该示例无法编译。我对const有以下警告
错误消息:
错误C2662:'Cfoo::GetNum':无法将'this'指针从'const Cfoo'转换为'Cfoo&'转换将失去限定符
class Cfoo
{
public:
bool RunMe( const Cfoo * bar ) {
int i = bar->GetNum() ;
}
int GetNum() {
return 7;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Cfoo a;
Cfoo b;
b.RunMe( &a);
return 0;
}
起初,我虽然与GetNum不返回const值有关。改变似乎没有帮助。
我做错了什么?,建议,提示,示例,链接?
最佳答案
GetNum
必须通过使其成为const成员函数来保证它不会更改对象的值
class Cfoo
{
public:
bool RunMe( const Cfoo * bar ) {
int i = bar->GetNum() ;
}
int GetNum() const { // !!!
return 7;
}
};