双链接列表:编译类错误

Double Linked List: compile class error

本文关键字:错误 编译 链接 列表      更新时间:2023-10-16

我有问题。我使用模板在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类的构造方法的行。

我在哪里错了?

谢谢

当我使用您当前的代码并将节点(h值,Next)更改为节点(H *value,Next Next)时,代码编译并可能正确运行(尚未对其进行测试)。示例:ideone.com/iag5wx - user4581301