对于大型项目的需求,我需要输入一个模板化对象的对象,并使用参数进行实例化。
Foo< A, B, C > FooItem(bar1, bar2);
FooItem
是使用bar1
和bar2
构建的对象。
有没有办法输入这个对象(它必须作为一种类型重新用于另一个模板)?
答案 0 :(得分:2)
您无法输入对象。您可以输入类型。 (线索在名称中!)
对于对象,如果需要较短的句柄,则需要引用:
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
答案 1 :(得分: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;