2012-06-10 80 views
1
typedef struct { 
    unsigned short int Position; // << That's what i'm trying to change! 
    unsigned short int OldPosition; 
} Turn_s; 

struct Turn_sMap{ 
    Turn_s *Turn; 
    Turn_sMap *NextTurn; 
}; 

New = new Turn_sMap; 
New->Turn = new Turn_s; 

New->Turn.Position = 0; // Already tried (New->Turn).Position = 0; 

爲什麼我得到那個編譯錯誤?我沒有訪問該結構在結構New中轉而又有一個名爲Position的成員?或者typedef混淆結構類型與一些指針瘋狂?請幫助,我迷路了! ):'.Position'左邊必須有class/struct/union

回答

1

聲明Turn_s *Turn;,使Turn指針類型。要訪問成員對象,您需要使用->運算符。嘗試:

New->Turn->Position = 0; 
+0

Ohhhh上帝,我怎麼錯過了,這是正確的....謝謝>。< –

1

Turn_sMap::Turn是一個指針。您需要取消對它的引用:

New->Turn->Position = 0; 

此外,你不應該在C使用typedef struct ++。剛剛宣佈的結構:

struct Turn_s { 
    unsigned short int Position; // << That's what i'm trying to change! 
    unsigned short int OldPosition; 
}; 

Turn_s a; 
foo(a); 
+0

我雖然我不得不使用它來避免把「結構」的無處不在......謝謝! –

+0

這發生在C,而不是C++:D – mfontanini

相關問題