当我尝试编译时,我得到以下代码的错误,告诉我以下内容:
'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。想知道这是否会产生影响。
答案 0 :(得分:1)
你想做什么? 由于isEnpty是类_stack的成员函数,因此无法工作。 您可以通过将函数isEmpty添加到_Stack类来解决第一个问题。
像这样:
#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;
}
bool isEmpty() const{
return stack::empty();
}
};
template <class T>
class QueueS {
public:
QueueS(){}
bool isEmpty() const{
}
void enqueue(const T& el){
while( !output.isEmpty()) {
input.push(output.pop());
}
input.push(el);
}
private:
_Stack<T> input;
_Stack<T> output;
};
int main()
{
_Stack<int> sk;
sk.isEmpty();
QueueS<int> qu;
qu.enqueue(4);
return 1;
}