我对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/

10-13 02:56