C++ 没有参数列表的模板名称使用无效

C++ 没有参数列表的模板名称使用无效,c++,templates,data-structures,linked-list,C++,Templates,Data Structures,Linked List,我的链表类遇到了问题,我已经创建了该类的接口和实现文件,但在构建它时,出现了以下错误:“在没有参数列表的情况下,模板名'LinkedList'的使用无效”。 这是我的接口文件: #ifndef LINKEDLIST_H #define LINKEDLIST_H template <typename T> struct Node{ T info; Node<T> *next; }; template <typename T> class Li

我的链表类遇到了问题,我已经创建了该类的接口和实现文件,但在构建它时,出现了以下错误:“在没有参数列表的情况下,模板名'LinkedList'的使用无效”。 这是我的接口文件:

#ifndef LINKEDLIST_H
#define LINKEDLIST_H

template <typename T>
struct Node{
    T info;
    Node<T> *next;
};

template <typename T>
class LinkedList
{
    Node<T> *start;
    Node<T> *current;
public:
    LinkedList();
    ~LinkedList();
};

#endif // LINKEDLIST_H
这样写:

template<typename T>
LinkedList<T>::LinkedList()
{
   start = nullptr;
   current = nullptr;
}
模板
LinkedList::LinkedList()
{
开始=空PTR;
电流=零PTR;
}

对于其他成员函数也是如此。但您将遇到另一个问题—将模板声明和定义到不同的文件。

模板LinkedList::LinkedList()
并在headerI中实现它。我已经完成了,但正如您所说,“NULL”的声明有一个错误,它表示在此范围内未声明NULL。如何解决这个问题???@Alladinsaoudi NULL是一个宏,在列出的几个不同的头中定义。您必须在想要使用它的地方至少包含其中一个。@jrol谢谢,非常感谢您的帮助。:)@使用C++11的Alladinsaoudi最好使用
nullptr
而不是
NULL
。此外,您可以始终简单地使用
0
而不是
NULL
(但是
nullptr
更好,因为编译器可以进行一些检查)。使用C++11或更高版本的任何人现在都应该使用
nullptr
template<typename T>
LinkedList<T>::LinkedList()
{
   start = nullptr;
   current = nullptr;
}