我有一个正在从事的C ++项目。

所有类的实现都与.h文件分开。

但是,我不确定为什么/何时需要向前声明。

例如,当我#include“ ClassType.h”时,我只是遇到一个错误,即使在“ ClassType.h”中明确定义了ClassType,编译器也完全拒绝编译具有指向ClassType的指针的类。

为什么对于编译器来说,仅仅看到我已经#include“ ClassType.h”还不够,为什么它要转发声明呢?

#include "ClassType.h"

// REFUSES TO COMPILE WITHOUT forward declaration
class ClassType;

class SomeClass
{
    ClassType* instance;
};

最佳答案

ClassType.h是否包含(直接或间接)您引用的文件(在其中定义SomeClass)?

关于c++ - 什么时候需要提前申报?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1089441/

10-11 18:45