C++ 没有参数列表的模板名称使用无效
我的链表类遇到了问题,我已经创建了该类的接口和实现文件,但在构建它时,出现了以下错误:“在没有参数列表的情况下,模板名'LinkedList'的使用无效”。 这是我的接口文件: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
#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;
}