[英]cannot call member function without object error
我在ClassA中有一個靜態funcA,它在classA中調用了非靜態funcB。 盡管我將對象賦予funcB調用,但仍然出現錯誤:沒有對象就無法調用成員函數
void* ClassA::funcA(void *arg)
{
ClassA *pC = reinterpret_cast<ClassA *>(arg);
funcB(pc);
}
void* ClassA::funcB(ClassA *arg)
{
}
是什么原因呢?
可以像您一樣在沒有對象的情況下調用靜態類方法。
需要在對象上調用常規的類方法,如下所示: objectInstance.classMethod( arguments go here )
或objectPointer->classMethod( arguments go here )
嘗試以下操作(在類聲明中更改funcB的簽名以使其匹配之后):
void* ClassA::funcA(void *arg)
{
ClassA *pC = reinterpret_cast<ClassA *>(arg);
pC->funcB();
}
void* ClassA::funcB()
{
...
}
問題是調用funcB應該通過一些對象來完成,例如:
pC->funcB(pC);
實際上,這種代碼比C ++更像C,因為如果您在對象上調用方法,則不需要將其作為參數傳遞。
您是從靜態方法調用的,因此作用域中沒有接收方對象。
因此,您不能調用非靜態方法。
您需要一個對象,該對象將收到消息: o.funcB(pc);
從靜態函數調用成員函數不是一個好主意,之所以出現錯誤是因為從靜態方法中調用了functionB。 static方法不能調用非靜態成員函數。 原因是靜態函數對類而不對對象起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.