我已经获得了创建双向链表的代码。链表中的节点是名为 ListItem 的结构。现在,在该节点内是一个为节点分配值的函数。我遇到的问题是我似乎无法创建节点并使用该函数为其分配值。
这是struct“ ListItem ”的代码。
template <class T>
struct ListItem
{
T value;
ListItem<T> *next;
ListItem<T> *prev;
ListItem(T theVal)
{
this->value = theVal;
this->next = NULL;
this->prev = NULL;
}
};
随附的.cpp文件中的相应 ListItem 函数:
template <class T>
ListItem<T>* List<T>::getHead()
{
}
template <class T>
ListItem<T>* List<T>::getTail()
{
}
template <class T>
ListItem<T> *List<T>::searchFor(T item)
{
}
这是我在主要功能中尝试做的事情。
int main()
{
ListItem<int> a;
a.ListItem(int 5);
system("PAUSE");
}
我在这里尝试做的就是创建一个节点并为其赋值。以下是我得到的错误:
= 'a'不是类或命名空间
= 在'('token
>之前缺少模板参数= 'int'之前的预期主要表达
答案 0 :(得分:3)
请记住,struct
与class
相同,所以您所做的就是创建一个名为ListItem
的类,其中包含一个采用单个参数的普通构造函数。
您可以像平常一样创建它:
ListItem<int> a(5);
您还有其他一些问题,例如为类中没有声明的函数(例如getHead
函数)。您也不能在单独的源文件中实现模板化函数成员,它们必须与类(或结构)定义一起位于头文件中。
答案 1 :(得分:2)
ListItem不是函数名,而是类/结构的构造函数。构造函数是一个特殊的函数,不能像那样调用。您的代码应如下所示:
int main()
{
ListItem<int> a(5);
system("PAUSE");
}