我想键入一个模板类型,并在第二个模板类中使用此类型。
首先,我使用辅助结构
定义了typedeftemplate<class T>
struct MyList {
typedef std::map<int, T> Type;
};
然后在第二个模板中使用它:
template <class T>
class MySecondClass {
public:
MySecondClass(MyList<T>& list) : list_(list) {}
private:
MyList<T>::Type list_;
};
不幸的是,使用MyListT& list;
不起作用并产生错误。
答案 0 :(得分:2)
我认为这就是你想要的:
template <typename T>
class MySecondClass {
public:
MySecondClass(typename MyList<T>::Type& list) : list_(list) {}
private:
typename MyList<T>::Type& list_;
};
答案 1 :(得分:1)
MyList<T>::Type
与MyList<T>
的类型不同,您将它们混合在MySecondClass
中。此外,您可能需要在最后一个声明中使用typename
前缀。