Stack模板中的函数不会返回0;

时间:2016-03-25 16:12:09

标签: c++ templates struct

我试图使用模板制作我自己的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;

我严格禁止上课。

0 个答案:

没有答案