2013-11-21 42 views
-1

我有以下结构:结构构件中未找到

typedef struct vertex_tag{ 
    int visited = 0; 
    int weight = FLT_MAX; 
    int prev; 
}vertex_t; 

它具有三个部件,如上所述。

我malloc的顶点是这样的:

vertex_t * vertex[G->vertices]; 
    for(i=0; i < G->vertices; i++) 
    { 
     vertex[i] = (vertex_t*)malloc(sizeof(vertex_t)); 
    } 

所以我创建一个从结构的矩阵。然后我打电话给他们在整个我这样创建的函数:

vertex[i]->visited 
vertex[i]->weight 
vertex[i]->prev 

我不断收到以下错误:

error: ‘vertex_t’ has no member named ‘visited’ 
error: ‘vertex_t’ has no member named ‘weight’ 
error: ‘vertex_t’ has no member named ‘prev’ 

谁能帮我明白为什么我不能这样做呢?

+7

这结构定义是无效的;成员不能像那样初始化。 –

+0

所以我不能让它们等于0和FLT_MAX? – user081608

+0

@ user081608:你可以,但只有在以后当你实际创建'vertex_t'时:'vertex_t v; v.visited = 0; v.weight = INT_MAX;' – Zeta

回答

1

Okay so I can do it after the for loop in which I malloced it?

你会做它在循环更好

vertex_t *vertex[G->vertices]; 
    for (i = 0; i < G->vertices; i++) 
    { 
     vertex[i] = malloc(sizeof(vertex_t)); 
     vertex[i]->visited = 0; 
     vertex[i]->weight = FLT_MAX; 
    } 

或根据泽塔的建议:

vertex_t vertex[G->vertices]; 
    for (i = 0; i < G->vertices; i++) 
    { 
     vertex[i].visited = 0; 
     vertex[i].weight = FLT_MAX; 
    }