2014-02-26 51 views
0

嗨,我面临这个问题,我研究,应该没有问题与我的代码。所以我不知道为什么发生这种情况,基本上我有这样的:错误:表达式必须有一个指向类C++的指针

typedef struct { 

Edge *next; 
Edge *twin; 

} Edge; 

然后,我有,当我尝试访问此边缘我面对的成员存储这个结构

std::vector<Edge*> EdgeList; 

但是矢量上面的错误。

Edge *e1 
e1->next = EdgeList[index]->next->twin; 

我能够访问只能达到一度,因为如果我以这种方式编写我的代码;

Edge *e1, *e2; 
e2 = EdgeList[index]->next; 
e1->next = e2->twin; 

错误消失。注意我确保所有的指针都不是NULL。我想问问为什么这样呢?如果我想获得几个学位,那么我不能为每个学位一次申报一个变量。有人可以帮忙吗?

+1

你有没有读过'new'? –

+0

您正试图使用​​未初始化的指针。 e1应该被声明为边e1;例如,使用e1.next访问。 – Steger

回答

2

你的问题是你创建了一个名为Edge的匿名结构和一个变量(匿名),而不是创建一个名为Edge的类型。

更改结构声明:

struct Edge 
{ 
    Edge *next; 
    Edge *twin; 
}; 

P.S:您不需要在C使用的typedef ++。 P.P.S:我不知道你的用例是什么,但你应该直接将结构存储到向量中,而不是指向它们的指针。

相关问题