2

テンプレート型を typedef し、この型を 2 番目のテンプレート クラスで使用したいと考えています。

まず、ヘルパー構造体で typedef を定義しました

template<class T>
struct MyList {
   typedef std::map<int, T> Type;  
};

そしてそれを2番目のテンプレートで使用しました:

 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>それらを に混ぜていますMySecondClasstypenameまた、最後の宣言にプレフィックスが必要になる場合があります。

于 2013-07-27T19:05:11.083 に答える