【发布时间】:2013-10-09 08:27:53
【问题描述】:
当我尝试编译以下内容时,我收到错误“错误 1 错误 C2143:语法错误:缺少 ';'前 '*'”。有谁知道我为什么会收到这个错误?我在这里做错了什么?
struct HE_edge {
HE_vert* vert; // vertex at the end of the half-edge<br>
HE_edge* pair; // oppositely oriented half-edge<br>
HE_face* face; // the incident face<br>
HE_edge* prev; // previous half-edge around the face<br>
HE_edge* next; // next half-edge around the face<br>
};
struct HE_vert {
float x, y, z; // the vertex coordinates<br>
HE_edge* edge; // one of the half-edges emanating from the vertex<br>
};
struct HE_face {
HE_edge* edge; // one of the half-edges bordering the face<br>
};
【问题讨论】:
-
您需要以相反的顺序进行声明。
HE_edge尝试使用编译器还不知道的HE_vert。 -
何前向声明你的类型?所以 HE_vert 没有在 HE_edge 的定义中命名类型。很多编译器现在告诉你这个,显然不是你的。
-
事实上,我并没有立即意识到你有一个循环依赖。看forward declarations。