'.Position'的左边必须有class / struct / union

时间:2012-06-10 01:46:51

标签: c++ pointers struct linked-list typedef

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;

为什么我得到编译错误?我没有访问结构转到结构新的内部,反过来有一个名为位置的成员?或者typedef混淆了结构类型与一些指针疯狂?请帮助,我迷路了! ):

2 个答案:

答案 0 :(得分:2)

声明Turn_s *Turn;使Turn成为指针类型。要访问成员对象,您需要使用->运算符。尝试:

New->Turn->Position = 0;

答案 1 :(得分: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);