0

我对 C++ 很陌生,我正在使用数组编写一个 Stack 类。我正在尝试编译我的小程序,但出现以下错误:

Stack::pop : function must return a value.

我的功能是这样的:

int pop (){

            if (top < 0){
                cout << "The stack is empty";
                return;
            }
            return stk [top--];


        }
4

5 回答 5

4

编译器是正确的。这一行:

return;

不返回值。

既然你声明你的函数会返回int,你必须这样做。或者如果你不能抛出异常。

于 2013-11-12T18:06:32.027 回答
3
return;

那不会返回值。您可能想抛出一个异常,以表明没有任何东西可以返回。

于 2013-11-12T18:06:19.213 回答
3

您需要在所有情况下返回一个值

cout << "The stack is empty";
return;

不返回任何东西。

您需要返回一个在正常使用中永远不会返回的值,或者将 替换returnthrow.

于 2013-11-12T18:05:22.730 回答
3

内:

if (top < 0){

阻止你:

return ;

它不会像方法指定的那样返回int 。

于 2013-11-12T18:05:32.043 回答
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(删除顶部元素)分开。

于 2013-11-12T18:15:18.817 回答