【问题标题】:writing a generic stack class in c++ [closed]用 C++ 编写一个通用堆栈类 [关闭]
【发布时间】:2013-11-21 01:58:02
【问题描述】:

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

这是一个问题:

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

他们给节点类

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’   

【问题讨论】:

  • 你还没有告诉我们出了什么问题。你有错误信息吗?另外值得注意的是,如果这是一项家庭作业,他们几乎肯定不希望您使用std::stack
  • 编写自己的堆栈类而不是使用 STL 实现的目的是什么?你的详细错误是什么?不清楚你在问什么!
  • 当他们问这个问题时,我怀疑他们是否打算让您从 std::stack 继承。此外,您不应该从标准库容器继承,因为它们没有虚拟析构函数。
  • 如果您打算这样做,您可以停止使用模板别名(并且很高兴您在这里这样做,因为我认为这不是您的教授的想法)。他们希望你实施 std::stack&lt;&gt;;不要利用它。
  • 抱歉指导我没有编译我得到这个错误:错误:'template 类 std::stack' 类堆栈的模板参数列表中参数 1 的类型/值不匹配:public std::stack

标签: c++ class templates generics inheritance


【解决方案1】:

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

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

【讨论】:

  • 谢谢你!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
猜你喜欢
  • 2015-11-25
  • 2013-05-26
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
相关资源
最近更新 更多