包含后是否需要前瞻声明?

tre*_*ree 2 c++ include visual-studio-2010 forward-declaration

我在自己的文件中有一个名为GameState的类,该类有一个指向另一个StatusView类型对象的指针,该对象位于自己的文件中.在GameState.h中,我已经包含了StatusView标头,但是当我尝试编译它时,我收到错误:

missing type specifier - int assumed
Run Code Online (Sandbox Code Playgroud)

但是,当我在包含它之后转发声明StatusView时,我能够编译它.我不知道是什么导致要求转发声明类.

Pot*_*ter 6

标头之间存在循环依赖关系.A包括B和B包括A,但B 实际上并不包括A,因为#pragma once已经对A 进行了评估.(对于标准的头部保护,它将是相同的.)

因为内部包含被忽略了,就好像它根本就不存在,你需要前向声明.