2017-02-21 21 views
0

私は初期化しようとしている:テンプレートテンプレートパラメータ:コンストラクタの初期化

template <template <class> class T> class DoubleLinkedList{}; 

テンプレートで:

template DoubleLinkedList<Student>::DoubleLinkedList(typename Student<int> _data); 
//error: Explicit instantiation of 'DoubleLinkedList' does not refer to a function template... 

し、コンストラクタのコードは次のとおりです伝えようとすることを

template <template <class> class T> DoubleLinkedList<T>::DoubleLinkedList(T<class _T> _data){ 
    head = NULL; 
    curr = NULL; 
    len = 0; 

    push(_data); 
}; 

テンプレートクラス伝達しようとしている:

template <class _T> class Student 

UP

もう一つ質問:私はクラスでクラスの構造を有しています。どうすれば彼に向けることができますか?

template <template <class> class T> 
class DoubleLinkedList 
{ 
    DoubleLinkedList(T<int> _data); 

    // ... 
}; 

template <template <class> class T> 
DoubleLinkedList<T>::DoubleLinkedList(T<int> _data) 
{ 
    head = NULL; 
    // ... 
    push(_data); 
} 

は使用法:あなたは大体この欲しい
curr = curr::_data->__name; // wrong

答えて

2

Student<int> s; 
DoubleLinkedList<Student> x(s); 
+0

を私はheader.cpp、main.cppに、constructor.cppなどを分割し、主なそれがある場合は、コンストラクタが表示されません初期化されていません(constructor.cpp内) ヘッダー: 'template class Student {// ..}' 'templa te