C++程序出错,请问错在哪?

2025-03-29 19:58:50
推荐回答(1个)
回答1:

static const unsigned int DEFAULT_SIZE=100;
这个没必要吧 放在外面定义为const就可以了吧

修改如下

#ifndef _STACK_H_
#define _STACK_H_
#include
using namespace std;
const unsigned int DEFAULT_SIZE=100;
template
class seqstack
{
private:
private:
int top;
T *stacka;
int maxsize;
public:
seqstack(int size=DEFAULT_SIZE);
~seqstack(){ delete [] stacka; }

void push(const T &item);
T pop(void);
T gettop(void) const ;
bool empty(void) const { return (top==-1); }
bool full(void) const { return (top==maxsize-1); }
void clear(void) { top=-1; }
};

template
seqstack::seqstack(int size)
{
top=-1;
maxsize=size;
stacka=new T[maxsize];
if(!stacka)
{
cerr<<"allocate memory failed."< exit(1);
}
}

template
void seqstack::push(const T &item)
{
if(full())
{
cerr<<"stack full, cannot push."< return;
}
top++;
stacka[top]=item;
}

template
T seqstack::pop(void)
{
if(empty())
{
cerr<<"stack empty, cannot pop."< exit(1) ;
}
T item=stacka[top];
top--;
return item;
}

template
T seqstack::gettop(void) const
{
if(empty())
{
cerr<<"stack empty, cannot gettop."< exit(1) ;
}
return stacka[top];
}
#endif