交叉引用类对象

JAS*_*SON 1 c++

我做了这样的事情:

struct Vertex {
  list<Edge*> edges;
};

struct Edge {
  Vertex* v1;
  Vertex* v2;
};
Run Code Online (Sandbox Code Playgroud)

和编译器错误:

'Edge'未在此范围内声明

如何在不将这两个标题放入单独的标题"vertex.h"和"edge.h"的情况下解决这个问题?

Alo*_*ave 5

使用前向声明 使用之前Edge.

struct Edge;

struct Vertex 
{
    list<Edge*> edges;
};
Run Code Online (Sandbox Code Playgroud)

请注意,当您转发声明类型时,编译器将该类型视为不完整类型,它不知道该类型的布局,但它只知道该类型存在,因此对于如何使用不完整的存在一些限制类型.

好读:
我什么时候可以使用前瞻性声明?