2017-04-20 10 views
0

構造体を使用するとリンクリストのように問題が発生します。私は2つの値(私の構造体)、 を宣言するとき それはエラーを返します:C++構造体がこのスコープで宣言されていません

this VALUE_NAME was not declared this scope

は、これは、ソースの一部です。

struct _node 
{ 
    int val; 
    _node* prev; 
    _node* next; 
}; 
typedef struct _node node; 

node* HEAD; 

void deleteALLNode() 
{ 
    node* node = HEAD; 
    node* _tmp; 

// 
// here _tmp value return error 
// 
} 
+0

、ここでは「VALUE_NAME」ですか)。 – stanleyli

+1

'node'は' typedef struct _node'です。それは同じ 'struct'への*ポインタ*ですか? – CinCout

+0

VALUE_NAMEは_tmpです。申し訳ありません – CancerYoon

答えて

1

あなたは(多分あなたができる1時間、しかし、あなたはもうコンパイルエラーなしでタイプを使用することはできません以上)タイプと、同じ名前を使用して変数に名前を付けることはできません。 node* node = HEAD;という名前を他のものに変更するだけです(node* pNode = HEAD;

+0

ありがとう!私はあなたのようにそれを修正しました。 – CancerYoon

+0

あなた自身で解決した場合は、自分の質問に自分の答えを加えて受け入れてください。同じ問題を抱える人は誰でもすぐに解決策を見つけることができます:-) – Mischo5500

-2

それはC++なら、あなたは、直接typedefへの必要性を_nodeを使用することはできません。 typedef構造体はCスタイルです。

struct _node 
{ 
    int val; 
    _node* prev; 
    _node* next; 
}; 

_node* HEAD; 

void deleteALLNode() 
{ 
    _node* node = HEAD; 
    _node* _tmp; 
} 
+0

同じエラーが返されます。 _tmpはこのスコープでは宣言されていません。 – CancerYoon

+0

GCC 4.9.2に合格しました。どのコンパイラを使用していますか? – stanleyli

+0

ああ!はいgccを使用します447 – CancerYoon

関連する問題