我是C ++的新手,我正在使用数组编写Stack类。我正在尝试编译我的小程序但是我收到以下错误:
Stack::pop : function must return a value.
我的功能是:
int pop (){
if (top < 0){
cout << "The stack is empty";
return;
}
return stk [top--];
}
答案 0 :(得分:4)
编译器是正确的。这一行:
return;
不会返回值。
由于您声明您的函数将返回int
,因此您必须这样做。如果你不能,就抛出异常。
答案 1 :(得分:3)
您需要在所有情况下都返回一个值
cout << "The stack is empty";
return;
不会返回任何内容。
您需要返回一个在正常使用时永远不会返回的值,或者将return
替换为throw
。
答案 2 :(得分:3)
在:
中if (top < 0){
阻止你:
return ;
不会像方法指定的那样返回 int 。
答案 3 :(得分:3)
return;
这不会返回值。你可能想抛出一个异常,表明没有东西可以返回。
答案 4 :(得分:0)
您应该修改pop
函数的实现。您的问题如下:
int pop ()
{
if (top < 0) // how is top negative???
{
cout << "The stack is empty";
return; // doesn't return anything - this is your compiler error
}
return stk [top--]; // you probably do not want to use this approach
}
更好的方法可能如下:
int pop ()
{
if (size == 0)
{
throw std::out_of_range("The stack is empty");
}
size -= 1;
int result = stk[size];
return result;
}
更好的方法是使用链表结构而不是数组结构,或者将top
(返回顶部元素)与pop
分开(删除顶部元素) )。