什么时候需要前方声明?

bob*_*obo 0 c++ forward-declaration

我正在研究这个C++项目.

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

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

例如,当我#included"ClassType.h"时,我刚刚遇到错误,编译器完全拒绝编译具有指向ClassType的指针的类,即使类ClassType 在"ClassType.h"中明确定义.

为什么编译器不能简单地看到我已经#included"ClassType.h",为什么它需要一个前向声明呢?

#include "ClassType.h"

// REFUSES TO COMPILE WITHOUT forward declaration
class ClassType;

class SomeClass
{
    ClassType* instance;
};
Run Code Online (Sandbox Code Playgroud)

Ric*_*dle 7

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