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 の前方宣言は必要ないはずですよね?