我有一个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的提前声明不应该是必要的,应该吗?