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の内側を回します。構造体Newには、Positionというメンバーがありますか?または、typedefは構造体型をいくつかのポインター狂気で混乱させますか?助けてください、私は迷子になっています!):

4

2 に答える 2

2

宣言Turn_s *Turn;Turnポインタ型を作ります。->メンバーオブジェクトにアクセスするには、演算子を使用する必要があります。試す:

New->Turn->Position = 0;
于 2012-06-10T01:50:46.233 に答える
1

Turn_sMap::Turnポインタです。それを逆参照する必要があります:

New->Turn->Position = 0; 

typedef structさらに、 C++では使用しないでください。構造体を宣言するだけです。

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

Turn_s a;
foo(a);
于 2012-06-10T01:50:03.900 に答える