【发布时间】:2022-12-17 18:39:59
【问题描述】:
这是我用一些操作创建了一个基本链表的代码,但无法使用模板类型。 说 LL 不是模板。
template <typename T> //typename
class node
{
public:
T data; //type T
node *next;
};
class LL
{
node *head = NULL;
public:
void insert(auto val)
{
node *n = new node;
n->data = val;
n->next = NULL;
if (head == NULL)
{
head = n;
return;
}
else
{
node *temp = head; //head not declared error though I declared it
while (temp->next != NULL)
{
temp = temp->next;
}
temp->next = n;
return;
}
}
void display()
{
node *temp = head; //head not declared error though I declared it
while (temp != NULL)
{
cout << temp->data << "->";
temp = temp->next;
}
cout << "NULL" << endl;
return;
}
};
int main()
{
LL<int> obj; //its correctly defined
obj.insert(1);
obj.insert(3);
obj.display();
return 0;
}
它还会给出更多错误,如上面代码中所评论的那样。(所有与模板相关)。
【问题讨论】:
-
node是一个模板。LL不是。 -
那我应该改变什么?
-
先把
LL改成模板。然后使用LL及其成员函数中的node指针的模板参数。
标签: c++ templates linked-list