我有一个方法run()
MyClass
的成员。在汇编,我得到需要C++静态方法
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;
我希望我可以使这个方法不是静态的,因为如果它是静态的,方法,通过运行被称为()必须是静态的以及非静态数据成员无法访问(我必须丑陋地将它们作为参数传递给方法)。
编译错误的原因是什么,什么是解决方案?
是否可以添加完整的代码?或者至少是类定义? – Avi 2013-04-09 12:28:42
这个链接可以帮助: http://stackoverflow.com/questions/5008541/how-to-call-a-non-const-function-within-a-const-function-c – 2013-04-09 12:30:55
它看起来像你正在使用'this.something'而不是'this-> something'。但错误似乎是在'MyClass :: run()'而不是'MyClass :: execute()' – MaPePeR 2013-04-09 12:31:24