双链表:编译类错误

时间:2017-12-12 19:39:11

标签: c++ list

我有问题。 我用C ++编写了一个使用模板的短列表程序。 (根据MCVE,我写了部分重现错误的代码)

#include <iostream>
using namespace std;

template <typename H> class Node{
protected:
  H *value;
  Node<H> *next, *prev;
public:
  Node(H *value) {
    this->value = NULL;
    if (value)
        this->value = new H(*value);
    next = prev = NULL;
}
Node(H value, Node<H> *next) {
    this->value = NULL;
    if (value)
        this->value = new H(*value);
    this->next = next;
    prev = NULL;
} 

 void setPrev(Node<H> *prev) {
    this->prev = prev;
  }
 }

template <typename H>class DoubleLinkedList {
private:
Node<H> *head, *last;
public:
 DoubleLinkedList() {
    last = new Node<H>(NULL);
    head = new Node<H>(NULL, last);
    last->setPrev(head);
}

};

int main() {
   DoubleLinkedList<int> *list = new DoubleLinkedList<int>();
   return 0;
 }

但是,当我尝试编译它时,我得到一个编译类模板错误,标记DoubleLinkedList类的构造函数方法的行。

我哪里错了?

由于

1 个答案:

答案 0 :(得分:0)

  

当我获取当前代码并将Node(H值,Node * next)更改为Node(H *值,Node * next)时,代码编译并可能正确运行(尚未测试)。示例:ideone.com/iag5wX - user4581301

相关问题