我在下面有一个简单的示例,该示例无法编译。我对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;
        }
};

10-06 05:35