我试图使用模板制作我自己的Stack版本。当我调用函数时,代码的第一个版本编译并正常工作。
1
template <typename T, int size = 60>
struct Stack{
T data[size];
int top_el;
Stack():top_el(-1){}
void push(T el){
data[++top_el] = el;
}
void pop(){
if (top_el==-1) return;
else top_el = top_el-1;
};
void top(){
if (top_el==-1) return;
else cout<<data[top_el].var<<endl;
};
bool empty(){
return top_el == -1;
}
};
2
template <typename T, int size = 60>
struct Stack{
T data[size];
int top_el;
Stack():top_el(-1){}
void push(T el){
data[++top_el] = el;
}
T pop(){
if (top_el==-1) return 0;
else return data[top_el--];
};
T top(){
if (top_el==-1) return 0;
else return data[top_elt];
};
bool empty(){
return top_el == -1;
}
};
第二个代码也编译,但是当我在代码中的某处调用函数top()或pop(),然后尝试编译时,我得到以下错误消息:
错误:无法转换&#39; 0&#39;来自&#39; int&#39;到了男人&#39;
以下行
if (top_el==-1) return 0;
我严格禁止上课。