前方宣言を使用し、#includes を実装ファイルに移動することで、一連のヘッダー ファイル「インクルード スパゲッティ」を簡素化しようとしています。ただし、次のシナリオに出くわします。
//Foo.h
#include "Bar.h"
class Foo
{
public:
void someMethod(Bar::someType_t &val);
};
//Bar.h
.
.
.
class Bar
{
public:
typedef std::vector<SomeClass> someType_t;
};
#include "Bar.h" を可能な限り削除したいと考えています。Bar.h の typedef が Bar クラスの外にリストされている状況も見られます。どちらの状況も同じ方法で対処できると思います。
何か案は?