【发布时间】:2014-12-21 03:48:44
【问题描述】:
我想用模板堆栈实现创建一个字符串堆栈,但程序在 s_ptr=new T(size); 处给出“从 int 到 const char* 的无效转换”错误;行。
我的 Stack.h
using namespace std;
template <class T>
class Stack{
private:
int size,top;
T *s_ptr;
public:
Stack(int);
void push(T val);
T pop();
bool isfull();
bool isempty();
};
template <class T>
Stack <T> :: Stack (int maxsize)
{
size=maxsize;
top=-1;
s_ptr=new T(size);
}
template <class T>
void Stack <T> :: push(T value){
if(!isfull()){
s_ptr[++top]=value;
}
else{
cout << "Stack is full";
}
}
template <class T>
T Stack <T> ::pop()
{
if(!isempty()){
return s_ptr[top--];
}
else{
cout << "Stack is empty";
}
}
template <class T>
bool Stack <T>::isfull(){
return top == size-1 ;
}
template <class T>
bool Stack <T>::isempty(){
return top ==-1 ;
}
main中的代码是
Stack <string> Stack1(50);
我该如何解决这个问题?对不起,如果之前问过,但我做了很多研究。谢谢...
【问题讨论】:
-
压入栈时需要复制两次吗?
标签: c++ string templates stack