2014-02-20 25 views
0

任何人都可以解釋這段代碼的指針使用情況;類指針的使用

b2Body* b = node;

GameActor* myActor = (GameActor*)b->GetUserData();

+0

'b'或'myActor'?您可能還需要展示如何定義「b2Body」和「GameActor」。 – herohuyongtao

+0

2行有不同的用法,所以我想知道這兩個用法 – Tek

+0

b2Body是類和GameActor未定義,在此代碼中用作樣本 – Tek

回答

2
b2Body* b = node; 

聲明指針b指向任何node當前指向。

GameActor* myActor = (GameActor*)b->GetUserData(); 

獲得某種指針出b,丟假裝它指向GameActor類型的對象。如果指針確實指向該類型,則myActor可以訪問該對象。否則,所有地獄即將破裂。

+0

你從哪裏得到了「node = node-> GetNext();」從? – gartenriese

+0

@gartenriese:在編輯之前,從這個問題開始。 –

+0

好的,我想我來不及看到它。 – gartenriese

1
b2Body * b = node; 

這創建了一個類型爲b2Body的名稱爲b的指針。 b指向對象節點指向。

GameActor* myActor = (GameActor*)b->GetUserData(); 

這創建了一個名爲myActor的GameActor類型的指針。 myActor指向稱爲GetUserData()的類b2Body成員函數的結果。

您可以將第二行分成兩行以更清楚地發生了什麼。

auto * data = b->GetUserData(); 
GameActor * myActor = (GameActor *)data;