2016-05-02 78 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]'指針分配內存(它應該給你未定義的行爲),代碼應該編譯。 – 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; 
}