调用struct中定义的函数时出错

时间:2013-02-07 07:21:13

标签: c++ struct

我已经获得了创建双向链表的代码。链表中的节点是名为 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'之前的预期主要表达

2 个答案:

答案 0 :(得分:3)

请记住,structclass相同,所以您所做的就是创建一个名为ListItem的类,其中包含一个采用单个参数的普通构造函数。

您可以像平常一样创建它:

ListItem<int> a(5);

您还有其他一些问题,例如为类中没有声明的函数(例如getHead函数)。您也不能在单独的源文件中实现模板化函数成员,它们必须与类(或结构)定义一起位于头文件中。

答案 1 :(得分:2)

ListItem不是函数名,而是类/结构的构造函数。构造函数是一个特殊的函数,不能像那样调用。您的代码应如下所示:

int main()
{
    ListItem<int> a(5);
    system("PAUSE");
}