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

时间:2012-05-11 02:43:05

标签: c++ visual-studio-2010 include forward-declaration

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

missing type specifier - int assumed

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

1 个答案:

答案 0 :(得分:6)

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

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