C++ 错误:表达式必须具有指向类C++;

C++ 错误:表达式必须具有指向类C++;,c++,struct,C++,Struct,嗨,我遇到了这个问题,我进行了研究,我的代码应该没有问题。所以我不知道为什么会这样,基本上我有: typedef struct { Edge *next; Edge *twin; } Edge; 然后我有一个向量来存储这个结构 std::vector<Edge*> EdgeList; 我只能访问一个学位,就像我以这种方式编写代码一样 Edge *e1, *e2; e2 = EdgeList[index]->next; e1->next = e2->twin

嗨,我遇到了这个问题,我进行了研究,我的代码应该没有问题。所以我不知道为什么会这样,基本上我有:

typedef struct {

Edge *next;
Edge *twin;

 } Edge;
然后我有一个向量来存储这个结构

std::vector<Edge*> EdgeList;
我只能访问一个学位,就像我以这种方式编写代码一样

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

错误消失了。注意,我已经确保所有指针都不是空的。我想问为什么会这样?如果我想访问几个度,我不能每次为每个度声明一个变量。有人能帮忙吗

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

将结构声明更改为:

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

S:在C++中不需要使用Type,


p.p.S:我不知道您的用例是什么,但是您可能应该直接将结构存储到向量中,而不是指向它们的指针。

您是否阅读过
新的
?您正在尝试使用未初始化的指针。e1应声明为边e1;例如,使用e1.next访问。
struct Edge
{
    Edge *next;
    Edge *twin;
};