2017-02-21 164 views
0

我嘗試初始化:模板的模板參數:構造函數初始化

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 <template <class> class T> class DoubleLinkedList{}; 

模板在其中試圖傳達:

template <class _T> class Student 

UP

一個問題:我在課堂上課的結構。我怎麼能求助於他?
curr = curr::_data->__name; // wrong

回答

2

您大概想這樣的:

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); 
} 

用法:

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

我分裂header.cpp,main.cpp中,constructor.cpp等,並主要看不到的構造函數,如果它是沒有初始化(在constructor.cpp中) header: 'template class Student {//}} 'templa te