One class uses a second class which uses a struct defined in the first
我正在尝试用骨头制作模型。它加载一个.obj文件来创建网格,并使用面组定义模型的每个"骨骼"。
我有一个Model类。在头文件中,我定义了一个称为Vertex的公共结构,该结构存储数据,例如模型中每个顶点的位置和法线方向。
我还有一个Bone类,该类具有指向Vertex结构的指针的矢量(#include
Model类将包含骨骼,因此我在标头中包含#include骨骼
同样,Bone类需要知道什么是Vertex,因此我在其标头中包含#include模型。
这给Bone带来了类型重定义错误,因此我将#pragma放在了Bone标头的顶部,但是现在我的问题是,我遇到了与上述代码行有关的四个编译错误。
前两个是:错误C2653:"模型":不是类或名称空间名称
后两个是:错误C2065:"顶点":未声明的标识符
但是,我确定该行代码在语法上没有任何错误。而且,如果我不将#one包含在Model类中,它会很好地工作。
有人知道如何解决这类问题吗?和/或是否有更好的方法可以做到这一点?
编辑:我已经将
我不确定是否可以颠倒此类的顺序,例如:http://www.parashift.com/c%2B%2B-faq-lite/misc-technical-issues.html#faq-39.14,因为骨骼需要一个指向Model :: Vertex的指针,而不是Model本身。
I have put class Bone; in the header of Model for forward declaration, but in the private: section of the Model header, I have Bone forearm; which gives an error that forearm uses an undefined class 'Bone'.
通常,前向声明用于指针/引用类型。
1 2 3 4 5 6 7 8 9 10 11 12 | // Model.h class Bone; // Forward declaration class Model{ Bone *forearm; // or Bone& forearm; // ..... }; // Model.cpp #include"Bone.h" #include"Model.h" // This inclusion order doesn't matter. // .... |
或者,您始终确保在每个包含