【发布时间】:2013-06-04 23:58:21
【问题描述】:
当我尝试编译时收到以下代码的错误,告诉我以下内容:
'isEmpty' : 不是 '_Stack' 的成员
-
编译类模板成员函数'void QueueS::enqueue(const T &)时出错
#include <iostream> #include <stack> using namespace std; template <class T> class _Stack : public stack<T> { public: T pop(){ T tmp=stack::top(); stack::pop(); return tmp; } }; template <class T> class QueueS { public: QueueS(){} bool isEmpty() const{ } void enqueue(const T& el){ while (!output.isEmpty()) { input.push(ouput.pop()); } input.push(el); } private: _Stack<T> input; _Stack<T> output; };
我不确定发生了什么。任何人都可以提供任何帮助吗?我显然还没有实现 isEmpty 。想知道这是否应该有效果。
【问题讨论】:
-
一个问题是
'isEmpty' : is not a member of '_Stack'。这与模板无关。 -
您认为
stack::top()会返回什么?top是一个成员函数,它应该在std::stack的instance 中调用。 -
与您的问题无关,但仍然:您不应使用以下划线和大写字母开头的标识符(例如
_Stack)。请参阅here 以获取相关的 SO 帖子。 -
更好的缩进将有助于看到
isEmpty在_Stack模板之外明确定义。 -
对不起;缩进在我自己的代码中更清晰,但我总是在尝试在给定的代码括号中粘贴一些内容时遇到困难。