我试图模板化几个类(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)