C++ 创建模板类后是否不是类、命名空间或枚举?
我正在尝试模板化一些类(LinkedListNode和LinkedList),这样C++ 创建模板类后是否不是类、命名空间或枚举?,c++,C++,我正在尝试模板化一些类(LinkedListNode和LinkedList),这样 template <class T> class LinkedListNode{ public: T data; LinkedListNode *next; LinkedListNode(); }; }) 编译时,我会遇到奇怪的错误: ./LinkedList.h:38:3:错误:未知类型名称“LinkedListNode”;你是说 “链接列表
template <class T>
class LinkedListNode{
public:
T data;
LinkedListNode *next;
LinkedListNode();
};
})
编译时,我会遇到奇怪的错误:
./LinkedList.h:38:3:错误:未知类型名称“LinkedListNode”;你是说
“链接列表”?
LinkedListNode*头;
^~~~~~~~~~~~~~
链表
/LinkedList.h:13:7:注意:此处声明了“LinkedList”
类链接列表{
^
./LinkedList.h:40:3:错误:未知类型名称“LinkedListNode”;您的意思是
“链接列表”?
LinkedListNode*当前;
^~~~~~~~~~~~~~
链表
/LinkedList.h:13:7:注意:此处声明了“LinkedList”
类链接列表{
^
LinkedList.cpp:7:1:错误:“LinkedListNode”不是类、命名空间或名称空间
列举
LinkedListNode::LinkedListNode(){
^
./LinkedList.h:5:7:注意:此处声明了“LinkedListNode”
类LinkedListNode{
^
如果它说还声明了我的LinkedListNode,为什么会出现这些错误?
LinkedListNode
不是一个类型,但LinkedListNode
是。请确保在定义LinkedList
之前包含此头文件
模板
类链接列表
{
私人:
LinkedListNode*头;
LinkedListNode*当前;
}
基本上,编译器说您没有类型LinkedListNode
,而且编译器是正确的-LinkedListNode
是一个模板,而不是一个类型。要形成一个类型,您需要用一个参数实例化模板。例如,LinkedListNode
是一个类型
但是,编译器可以提供更好的诊断。例如,g++将:
4:错误:“x”之前缺少模板参数
private:
LinkedListNode *head;
//iterator for traversing the list
LinkedListNode *current;
template <class T>
class LinkedList
{
private:
LinkedListNode<T> *head;
LinkedListNode<T> *current;
}