2017-02-21 163 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