実際にクラスを宣言することなく、クラスの名前をコンパイラに伝える方法のこと。
名前空間未所属のクラスの前方宣言
class Hoge;
名前空間aaaに所属のクラスの前方宣言
namespace aaa{
class Hoge;
}
名前空間aaa::bbbに所属のクラスの前方宣言
namespace aaa{
namespace bbb{
class Hoge;
}}
なお、
namespace aaa::bbb{
class Hoge;
}
はビルドエラーになる。
クラスHogeのインナークラスMosaに対する前方宣言
→インナークラスは前方宣言ができない。設計を見直すか、ヘッダを読み込むかのどちらか。
たいていは、設計を見直した方がよい。