如何使用模板链接数据结构中的节点对象?

时间:2018-02-12 17:32:58

标签: c++ templates data-structures stack

我想通过链接节点*对象来使用模板来创建更多通用数据结构,例如堆栈。但是一旦我使用了模板,就不再识别节点类,编译器说:

错误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

2 个答案:

答案 0 :(得分:2)

编译器不会尝试推断Node课程中Stack可能是什么,它只是模板。您需要提供具体的类,如Node<Object>

答案 1 :(得分:0)

Stack类依赖于模板化的Node类。因此,无论何时在Stack中声明Node的任何对象,您还必须提供它必须具有的类型。