0

当我尝试编译时,我收到以下代码的错误,告诉我以下内容:

  • '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 。想知道这是否应该有效果。

4

1 回答 1

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;
 }
于 2013-06-09T00:30:13.697 回答