2

我想 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;不起作用并产生错误。

4

2 回答 2

2

我认为这就是你想要的:

template <typename T>
 class MySecondClass {
    public:
       MySecondClass(typename MyList<T>::Type& list) : list_(list) {}
    private:
       typename MyList<T>::Type& list_;   
  };
于 2013-07-27T19:32:16.963 回答
1

MyList<T>::Type不是同一类型,MyList<T>并且您将它们混合在MySecondClass. 此外,您可能需要typename在最后一个声明上添加前缀。

于 2013-07-27T19:05:11.083 回答