模板成员问题

Template Membership Problems?

本文关键字:成员问题      更新时间:2023-10-16

当我尝试编译时,我得到以下代码的错误:

  • '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是类_stack的成员函数。第一个问题可以通过在_Stack类中添加函数isEmpty来解决。

一样:

#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;
 }