我在 C++ 代码中有一个奇怪的问题,我无法弄清楚发生了什么。我知道前向声明是什么,我知道什么时候使用它们等等......
但是,在我拥有的 C++ 项目中,我被迫声明一个已经在包含的标头中声明的类。它看起来像这样
windows.h:
#ifndef WINDOWS_HH_
#define WINDOWS_HH_
#include "foo.h"
class fooC; // If I don't forward declare here, won't compile!?
class WindowC
{
public:
WindowC();
~WindowC();
public:
fooC a;
};
#endif
然后, foo.h 包含 fooC 的声明
#ifndef FOO_HH_
#define FOO_HH_
class fooC
{
public:
fooC();
~fooC();
};
#endif
知道为什么会发生这种情况吗?实际代码是一个大项目的一部分,真的很难弄清楚错误可能是什么......但我相信理论上 fooC 的前向声明不应该是必要的,不是吗?