我做了这样的事情:
struct Vertex {
list<Edge*> edges;
};
struct Edge {
Vertex* v1;
Vertex* v2;
};
Run Code Online (Sandbox Code Playgroud)
和编译器错误:
'Edge'未在此范围内声明
如何在不将这两个标题放入单独的标题"vertex.h"和"edge.h"的情况下解决这个问题?
使用前向声明 使用之前Edge.
struct Edge;
struct Vertex
{
list<Edge*> edges;
};
Run Code Online (Sandbox Code Playgroud)
请注意,当您转发声明类型时,编译器将该类型视为不完整类型,它不知道该类型的布局,但它只知道该类型存在,因此对于如何使用不完整的存在一些限制类型.
好读:
我什么时候可以使用前瞻性声明?
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |