【发布时间】:2011-12-08 09:44:41
【问题描述】:
在我的程序中,我有 Vertex 的 Edges 和 Faces 类,我希望将它们用于对形状进行建模。在此之前,我的 Edge 类包括我的“vertex.h”文件,我的 Face 类包括我的 Edge.h 文件。在 Face 类中,我声明了一些边缘类型的变量,在 Edge 类中,我声明了一些顶点类型的变量。都在工作。我的问题是在我的实施过程中,我意识到我希望边缘知道它们连接在一起的面,并且我想将它存储在边缘中。我想声明一个 Face 类型的指针,并在类的构造函数中使用:
Face * joiningFaces = new joiningFaces[2];
当我这样做时,我得到了说 Face 不是一种类型的语法错误,即使我在 Edge.h 中包含 Face.h 也是如此。
是否有某种层次系统阻止我将 Edge in Face 和 Face in Edge 包括在内?还是我在做傻事?
===代码====
===edge.h===
#ifndef EDGE_H_
#define EDGE_H_
#include "Vertex.h"
#include "Face.h"
class Edge {
private:
Vertex a;
Vertex b;
Face * joinsFace;
public:
Edge();
Edge(Vertex newa, Vertex newb);
...ect
};
===脸.h===
#ifndef FACE_H_
#define FACE_H_
#include "Edge.h"
class Face {
private:
Edge a;
Edge b;
Edge c;
public:
Face();
Face(Edge newA, Edge newB, Edge newC);
virtual ~Face();
Edge getEdgeA();
Edge getEdgeB();
Edge getEdgeC();
};
#endif /* FACE_H_ */
【问题讨论】:
-
发布代码,否则您将得到的只是明智的猜测。
-
如果不查看 Face.h/.cpp、Edge.h/.cpp 和您的实际程序中的包含内容,很难理解问题或查明问题。
-
你能告诉我们
Face.h和Edge.h吗?您遇到了循环依赖问题,可以通过前向声明来解决。 -
上面的代码试图创建
joiningFaces的数组而不是Faces 的数组——你定义了joiningFaces类吗? -
谢谢,我已经添加了代码 sn-ps。