用c ++编写泛型堆栈类

时间:2013-11-21 01:58:02

标签: c++ class templates generics inheritance

您好我不确定我的代码是否不正确我一直在搜索可以找到任何内容。

这是一个问题:

在Java或C ++中为使用链表的堆栈类型编写一个名为Stack的泛型类 存储元素。 Stack类有一个名为head的成员变量,它引用了 列表的第一个节点,以及一个名为size的成员变量,用于存储元素的数量 在堆栈上。 Stack类提供了STL堆栈类的所有方法,包括 推,弹出,顶部和空。

他们给出节点类

template <typename T>
class Node {
public:
T nodeValue;
Node<T> *next;
Node (const T& item, Node<T> *ptr = NULL):
nodeValue(item), next(ptr)
{}
};

现在这是我写的Stack类:

template <typename T>
class Stack:public std::stack<Node>
{
public:
    Node<T> *head;
    T size;
    Stack(const T& capacity, Node<T> *ptr):size(capacity),head(ptr){};
};

当我运行它时我得到了这个:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Sequence> class std::stack’   

1 个答案:

答案 0 :(得分:1)

当您将Nodestd::stack一起使用时,至少应该实例化template <typename T> class Stack : public std::stack<Node<T> > // ^^^ { ];

{{1}}