c++ - 在 C++ 中编写通用堆栈类

标签 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’   

最佳答案

至少你应该实例化 Node,当你将它与 std::stack 一起使用时:

template <typename T>
class Stack : public std::stack<Node<T> >
                                 // ^^^
{
];

关于c++ - 在 C++ 中编写通用堆栈类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20111033/

相关文章:

C++11 std::to_string(double) - 没有尾随零

c++ - 从运行多次的循环中获取输入 C++

PHP 类:何时使用::vs。 ->?

django - 模板django中的随机字符串

c++ - C++模板模板参数的正确使用

c++ - 如何删除 C++ 映射中的最后 n 个元素?

c++ - (C++) 为什么 boost 作者在这里使用结构而不是类?

c# - 如果(实例)/自定义类上的隐式 bool 转换

c++ - 特定成员函数的部分特化

c++ - 性能受文件解析线程的影响可能是由于 std::string 堆分配?