フォワード宣言を使用し、実装ファイルに#includeを移動することで、一連のヘッダファイル "include spaghetti"を単純化しようとしています。しかし、私は次のシナリオを続けます:フォワードは、C++でクラスのパブリックなtypedefを宣言します
//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クラスの外にリストされている状況もわかります。私は両方の状況が同じように対処できると仮定しています。
アイデア?
バーは本当にクラスかテンプレートですか? Barがテンプレートの場合、つまりBarが一意でないため、Bar :: someType_tも一意でない場合、答えは異なります。 –