0

对于大型项目的需要,我需要 typedef 一个模板类的对象,并用参数实例化。

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

FooItem是对象,用bar1和构造bar2

有没有办法对这个对象进行类型定义(它必须作为一种类型重新用于另一个模板)?

4

2 回答 2

2

你不能 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
于 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 回答