对于大型项目的需要,我需要 typedef 一个模板类的对象,并用参数实例化。
Foo< A, B, C > FooItem(bar1, bar2);
FooItem
是对象,用bar1
和构造bar2
。
有没有办法对这个对象进行类型定义(它必须作为一种类型重新用于另一个模板)?
你不能 typedef objects。您可以 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;