我有一個方法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