我有问题。 我用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类的构造函数方法的行。
我哪里错了?
由于
答案 0 :(得分:0)
当我获取当前代码并将Node(H值,Node * next)更改为Node(H *值,Node * next)时,代码编译并可能正确运行(尚未测试)。示例:ideone.com/iag5wX - user4581301