【发布时间】:2013-04-09 12:26:52
【问题描述】:
我有一个方法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() 调用的方法也必须是静态的,并且不能访问非静态的数据成员(我必须丑陋地将它们作为参数传递到方法)。
编译错误的原因是什么,有什么解决办法?
【问题讨论】:
-
是否可以添加完整代码?或者至少是类定义?
-
此链接可能会有所帮助:stackoverflow.com/questions/5008541/…
-
您使用的是
this.something,而不是this->something。但错误似乎在MyClass::run()而不是MyClass::execute() -
静态方法在哪里?
-
run() 不是静态的 --> 我得到错误。 run() 是静态的 --> 没有错误
标签: c++ static constants static-methods