0

我有一个方法run()成员MyClass。在编译时,我得到

    Error   3   error C2662: 'MyClass::run' : 
    cannot convert 'this' pointer from 'const MyClass' to 'MyClass&'

ITOH,如果我把这个方法设为静态,我没有错误。方法调用发生在这里:

Errors MyClass::execute( const AbstractExecutionContext &ctx ) const
{
    Errors errs;

    Watch wat; wat.restart();
    {

        run() ;

    }

    return errs;
}

这个方法的声明是

Errors execute(const AbstractExecutionContext &ctx) const;

我希望我可以使这个方法不是静态的,因为如果它是静态的,则 run() 调用的方法也必须是静态的,并且不能访问非静态的数据成员(我必须丑陋地将它们作为参数传递给方法) .

编译错误的原因是什么,解决方案是什么?

4

1 回答 1

8

run一定const也是。或功能execute不应该const

在您的执行功能this中是const MyClass* const this. 何时run不是static和不是const- 尝试调用对象non-const的函数const。如果run是静态的 - 一切正常,因为static函数没有this指针。

于 2013-04-09T12:28:07.803 回答