2013-05-08 130 views
0

我得到這個錯誤與我的代碼。用指針調用類函數問題

錯誤C2228:'.showHand'的左邊必須有class/struct/union 1> type是'PokerHand *'您打算使用' - >'嗎?

這是我的主要功能是獲取錯誤的一部分。錯誤的是我猜我做得不正確地使用指針這就是爲什麼錯誤是告訴我使用->的一個,我叫梭哈()

PokerHand* Dog = Wood.dealN(5); 
Dog.showHand(); 

,但是我不知道在哪裏我甚至會把它放在我的代碼中。就我所知,代碼的其他部分正在工作,我只需要能夠在我的主文件中調用showHand()函數。

+0

狗是一個指針,所以你需要使用 - > ...通常如果intelesens不會繼續使用錯誤的accesser。 – 2013-05-08 01:56:05

回答

4

這條線:

Dog.showHand(); 

應該是:

Dog->showHand(); 

既然是pointer不能使用.訪問您必須使用->成員。

+0

啊。疑難雜症。謝謝。指針語法有很多問題! – user2105982 2013-05-08 01:54:17

+0

@ user2105982在這種情況下,您可能想了解一些關於指針的信息,因爲如果您在使用它們時遇到問題,那麼碰到與它們有關的問題(從崩潰泄漏到奇怪行爲)非常容易。此外,由於這回答了您的問題,您應該點擊旁邊的灰色複選標記將其標記爲正確答案! – JustSid 2013-05-08 01:56:16

+0

會做!但我必須等6分鐘。 – user2105982 2013-05-08 01:59:30

1

當左側是直接對象實例時,使用.運算符。

當左側是指向對象實例的指針時,使用->運算符。

->運營商是*.運營商的組合。換句話說,這樣的代碼:

Dog->showHand(); 

是與此相同的代碼:

(*Dog).showHand(); 

由於*操作者首先取消引用指針來訪問對象實例,然後將.操作者可以訪問對象的成員。