【问题标题】:No return statement warning in function returning non-void返回非void的函数中没有返回语句警告
【发布时间】:2020-10-03 09:57:44
【问题描述】:

这是我的代码行,我收到一条警告说“函数返回非 void 中没有返回语句警告”我已将总计声明为:静态 int 总计;

int Rooms::getTotalEmptyRooms() {
    return total;
}
int Rooms::setTotalEmptyRooms(int i) { //warning here
    total = i;
}

有什么建议可以消除这个警告吗?

【问题讨论】:

  • 这个警告是说你不一致。你的函数说它将返回一个 int,并且它没有返回一个 int。你必须选择一个或另一个,你不能同时拥有。
  • @HANA 邮件中有什么不清楚的地方?
  • 您没有收到警告的哪一部分? setTotalEmptyRooms 中缺少 return 语句?使用“函数返回非void”来描述setTotalEmptyRooms?还有什么?
  • 向非 void 函数声明非返回语句是很危险的(这就是警告的原因),您作为 int-return 的函数必须具有整数输出。因此,添加return total; 或将您的函数更改为void,知道total 是一个属性,因此可以将其视为一个mutator。
  • 以下答案之一是否解决了您的问题?如果是,请考虑接受。

标签: c++ oop static


【解决方案1】:

当你将它声明为一个 int 时,它必须有 return 并在函数内部带有一个 in。

要么把头换成

void Rooms::setTotalEmptyRooms(int i) {
    total = i;
}

或者让它返回一些东西,比如

int Rooms::setTotalEmptyRooms(int i) {
    total = i;
    return total;
}

【讨论】:

    【解决方案2】:

    您需要在函数中添加return语句或将签名更改为void

    int Rooms::setTotalEmptyRooms(int i)
    {
        total = i;
        return somthing;
    }
    

    void Rooms::setTotalEmptyRooms(int i)
    {
            total = i;
    }
    

    【讨论】:

    • 没有声明匹配 'void Rooms::setTotalEmptyRooms(int)' 我收到第二个建议时出现此错误。
    • 如果出现无声明错误,则需要更改类中声明的返回类型
    【解决方案3】:

    您的函数被声明为返回int。但是函数中没有 return 声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2017-07-09
      • 1970-01-01
      • 2011-10-26
      • 2019-03-27
      • 2020-01-18
      相关资源
      最近更新 更多