创建模板类后不是类,命名空间或枚举?

eca*_*ano 8 c++

我试图模板化几个类(LinkedListNode和LinkedList),这样

template <class T>
class LinkedListNode{
    public:
        T data;
        LinkedListNode *next;
        LinkedListNode();
};
Run Code Online (Sandbox Code Playgroud)

在我的LinkedList类中,我有私有变量:

private:
    LinkedListNode *head;
    //iterator for traversing the list
    LinkedListNode *current;
Run Code Online (Sandbox Code Playgroud)

};

编译时,我遇到了奇怪的错误:

./LinkedList.h:38:3:错误:未知类型名称'LinkedListNode'; 你是说'LinkedList'吗?LinkedListNode*head; ^ ~~~~~~~~~~~~~ LinkedList ./LinkedList.h:13:7:注意:'LinkedList'在这里声明了LinkedList {^ ./LinkedList.h:40:3:错误:未知类型name'LinkedListNode'; 你是说'LinkedList'吗?LinkedListNode*current; ^ ~~~~~~~~~~~~~ LinkedList ./LinkedList.h:13:7:注意:'LinkedList'在这里声明类LinkedList {^ LinkedList.cpp:7:1:错误:'LinkedListNode'是不是类,命名空间或枚举LinkedListNode :: LinkedListNode(){^./ LinkedList.h:5:7:注意:'LinkedListNode'在这里声明类LinkedListNode {^

如果我的LinkedListNode也被声明,为什么我会收到这些错误?

YSC*_*YSC 12

LinkedListNode不是一种类型,但是LinkedListNode<T>.一定要在头文件中实现LinkedListNode::LinkedListNode()和其他成员函数,并#include在定义之前使用此头文件LinkedList<T>.

template <class T>
class LinkedList
{
private:
    LinkedListNode<T> *head;
    LinkedListNode<T> *current;
}
Run Code Online (Sandbox Code Playgroud)