【发布时间】:2013-11-21 00:06:10
【问题描述】:
我有以下结构:
typedef struct vertex_tag{
int visited = 0;
int weight = FLT_MAX;
int prev;
}vertex_t;
它具有上述三个成员。
我这样分配顶点:
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’
谁能帮我理解为什么我不能这样做?
【问题讨论】:
-
该结构定义无效;成员不能这样初始化。
-
所以我不能让它们等于 0 和 FLT_MAX?
-
@user081608:你可以,但只有在你实际创建
vertex_t之后:vertex_t v; v.visited = 0; v.weight = INT_MAX; -
好的,我可以在我分配它的 for 循环之后执行它吗?
-
@user081608:如果每个
vertex[i]只分配一个元素,为什么vertex不只是vertex_t[G->vertices]? (vertex_t vertex[G->vertices]。顺便问一下,Dijkstra?
标签: c data-structures struct compiler-errors