大規模なプロジェクトのニーズに合わせて、テンプレート化されたクラスのオブジェクトを型定義し、引数でインスタンス化する必要があります。
Foo< A, B, C > FooItem(bar1, bar2);
FooItem
bar1
とで構成されるオブジェクトbar2
です。
このオブジェクトを型定義する方法はありますか (別のテンプレートで型として再利用する必要があります)?
オブジェクトを typedef することはできません。型を typedef できます。(ヒントは名前にあります!)
オブジェクトの場合、短いハンドルが必要な場合は参照が必要です。
typedef Foo<A, B, C> FooABC;
FooABC FooItem(bar1, bar2);
auto & f = FooItem; // 'f' is a FooABC &
auto copy_of_f = f; // this is a FooABC
新しいクラスを構築するのはどうですか?
template <typename T1, typename T2, typename T3>
struct Foo1 : public Foo<T1,T2,T3>
{
Foo1()
: Foo<T1,T2,T3>(bar1, bar2) //bar1, bar2 - global or static objects?
{}
// ......
};
Foo1<int, char, double> a;
//....
typedef Foo1<A,B,C> FooItem;
FooItem b;