0

大規模なプロジェクトのニーズに合わせて、テンプレート化されたクラスのオブジェクトを型定義し、引数でインスタンス化する必要があります。

Foo< A, B, C > FooItem(bar1, bar2);

FooItembar1とで構成されるオブジェクトbar2です。

このオブジェクトを型定義する方法はありますか (別のテンプレートで型として再利用する必要があります)?

4

2 に答える 2

2

オブジェクトを 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
于 2012-11-30T14:34:23.587 に答える
0

新しいクラスを構築するのはどうですか?

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;
于 2012-11-30T15:32:09.547 に答える