我想通过链接节点*对象来使用模板来创建更多通用数据结构,例如堆栈。但是一旦我使用了模板,就不再识别节点类,编译器说:
错误GCC模板类Node'在这里声明 错误GCC无效使用没有参数列表的模板名称'Node'
到目前为止,我在头文件上的代码是:
#ifndef STACK_HPP
#define STACK_HPP
template <class Object>
class Node{
friend class Stack;
private:
Object data;
Node* next;
public:
Node(Object d);
Node();
};
template <class Object>
class Stack{
private:
Node* top;
int size;
bool isEmpty();
public:
Stack();
~Stack();
void Push(Object d);
Object Pop();
Object Spy();
};
#endif
答案 0 :(得分:2)
编译器不会尝试推断Node
课程中Stack
可能是什么,它只是模板。您需要提供具体的类,如Node<Object>
。
答案 1 :(得分:0)
Stack类依赖于模板化的Node类。因此,无论何时在Stack中声明Node的任何对象,您还必须提供它必须具有的类型。