如何在模板类中使用c ++模板typedef

时间:2013-07-27 18:57:15

标签: c++ templates typedef

我想键入一个模板类型,并在第二个模板类中使用此类型。

首先,我使用辅助结构

定义了typedef
template<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;不起作用并产生错误。

2 个答案:

答案 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>::TypeMyList<T>的类型不同,您将它们混合在MySecondClass中。此外,您可能需要在最后一个声明中使用typename前缀。