我对C++的处理方式有些困惑。
我有类似的东西:
typedef struct {
//struct fields
} Vertex;
#include "GenericObject.h"
现在在GenericObject.h中,我有:
class GenericObject {
public:
Vertex* vertices;
}
当我尝试编译时,编译器会说:
如何获得GenericObject.h了解顶点?
我的印象是,包含文件中包含在#include之前定义的所有内容。
最后,您能否给我一些有关如何正确使用#include的提示,而不引入过多的冗余或循环包含。
谢谢。
最佳答案
有两件事,首先,您希望它只是...
struct Vertex
{
//struct fields
};
那是在C++中正确定义的结构。
现在,您需要在通用对象 header 中包含Vertex.h或包含顶点结构的任何文件,
#include "Vertex.h"
class GenericObject {
public:
Vertex* vertices;
};
或转发声明为...
struct Vertex;
class GenericObject {
public:
Vertex* vertices;
};
不要#include“Vertex.h”中的“GenericObject.h”。
关于c++ - 管理C++包含指令的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6191031/