2017-06-30 9 views
1

私は上記のエラーをネットで検索しましたが、主に構造体のフィールド( - > vs。私はそれらを試しましたが、私は同じエラーを受け取り続けます。 私はこの二つの構造体を持っている:構造体または共用体のエラーでないメンバーのリクエスト

struct Node_ { 
    int num; 
    G12_t* G12; 
}node_t; 

struct G12_{ 
    int level; 
    int size; 
    G12_t* next; 
}G12_t; 

私はnode_tでG12_tのレベルフィールドへのアクセスを取得したい場合は、私は上記のエラーを取得します。私は怒鳴るレベルのフィールドへのアクセス:

node_t* pNode; 

pNode->G12->level = 0; 
+1

'node_t'はタイプが、可変ではありません:あなたは、完全な構造体の名前を使用する必要があります。おそらく 'typedef'を忘れたでしょう。そして、そのような複雑な命名規則を発明しないでください。 'Node'は' struct'と 'typedef':' typedef struct Node Node'のためにうまくいくはずです。また、 'Node'の前に' G12'の宣言を持たなければなりません。 –

答えて

3

あなたはこれらの2つのタイプのためのtypedefを作成しようとしたが、あなたはtypedefキーワードを使用していないように見えます。あなたは代わりにG12_tと呼ばれるstruct G12_のインスタンスと、node_tと呼ばれるstruct Node_のインスタンスを作成しました。

それぞれの前にtypedefキーワードを追加する必要があります。また、node_tの前にG12_tを定義する必要があります。後者は前者を使用しており、定義されている構造体内でG12_tという名前を使用できます。

typedef struct G12_{ 
    int level; 
    int size; 
    struct G12_* next; 
}G12_t; 

typedef struct Node_ { 
    int num; 
    G12_t* G12; 
}node_t; 
+0

もう一つの方法は、 'struct'定義の前に' typedefs'宣言を入れることです。 'typedef struct G12 G12;'、 'typedef struct Node Node;'そして 'struct'定義の順序は自由です。 –

関連する問題