2016-05-02 20 views
1

コンパイラが「ノードはタイプに名前を付けない」という理由を知りません。タイプに名前を付けません

struct node; 
struct node{ 
    int data; 
    struct node* left; 
    struct node* right; 
}; 
struct node *nodes[1024]; 
nodes[1]->data = 1; 
nodes[1]->left = NULL; 
nodes[1]->right = NULL; 
+1

をつまり、なぜあなたは、おそらく誰かに依頼する必要があります。 –

+0

'nodes [1]' pointer(未定義の振る舞いを与えるはずです)にメモリを割り当てないのとは別に、コードをコンパイルする必要があります。 – vsoftco

+0

ノードポインタにタイプを割り当てていない可能性がありますか? – Auriga

答えて

4

今、私は指定されたとおりに、あなたがコードを書いたと仮定しています:

struct node *nodes[1024]; 
nodes[1]->data = 1; 
nodes[1]->left = NULL; 
nodes[1]->right = NULL; 

ことが有効なC++コードではありませんので、あなたがコンパイルエラーを得ている理由です。

しかし、あなたが関数にそのコードを移動した場合、それだけで正常にコンパイルします:

struct node *nodes[1024]; 

void AddFunction() 
{ 
    nodes[1]->data = 1; 
    nodes[1]->left = NULL; 
    nodes[1]->right = NULL; 
} 
関連する問題