【问题标题】:template template parameter: constructor initialization模板模板参数:构造函数初始化
【发布时间】:2017-02-21 18:34:45
【问题描述】:

我正在尝试初始化:

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

向上

还有一个问题:我在课堂上有一个结构。怎么找他?
curr = curr::_data-&gt;__name; // wrong

【问题讨论】:

    标签: c++ class templates template-templates


    【解决方案1】:

    你大致想要这个:

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

    【讨论】:

    • 我拆分了 header.cpp、main.cpp、constructor.cpp 等,如果没有初始化(在 constructor.cpp 中),main 看不到构造函数 header:template &lt;class _T&gt; class Student{ //.. }template &lt;template &lt;class&gt; class T&gt; class DoubleLinkedList{ DoubleLinkedList(T&lt;class _T&gt; _data); //... }constructor.cpp :template &lt;template &lt;class&gt; class T&gt; DoubleLinkedList&lt;T&gt;::DoubleLinkedList(T&lt;class _T&gt; _data){//...}template DoubleLinkedList&lt;Student&gt;::DoubleLinkedList(Student _data); //-error
    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2011-05-24
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多