2016-05-02 4 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; 
}