模板会员问题?

时间:2013-06-08 23:51:15

标签: c++ templates

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

  • '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。想知道这是否会产生影响。

1 个答案:

答案 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;
 }