2014-10-18 59 views
0

我在C初學者++,並試圖創建一個類嘗試使用*指針運算符來調用類的成員函數

foo* a= new foo(1); 
*(a).kCreateThread(); 

的新實例,我得到以下錯誤

錯誤C2228:'.kCreateThread'的左邊必須有類/結構體/聯合體

什麼是錯?

+3

'(* a).kCreateThread();'。你的語法試圖調用a.kCreateThread()並取消引用它的返回值,而我的第一個解引用指針a,然後嘗試用它調用kCreateThread。這是因爲*具有較低的優先順序。 – Creris 2014-10-18 10:32:55

+1

[此運算符優先級表可能有幫助。](http://en.cppreference.com/w/cpp/language/operator_precedence) – 2014-10-18 10:38:48

回答

3

你寫什麼就相當於

*((a).kCreateThread()); 

您應該使用

a->kCreateThread(); 

(*a).kCreateThread(); 

最後這兩個是等價的。

1

是這樣的: a-> kCreateThread();

相關問題