【问题标题】:C2120 when using return in a void slot in Qt C++C2120 在 Qt C++ 中的 void 槽中使用 return
【发布时间】:2016-08-28 04:25:49
【问题描述】:

当我将 return;return void(); 放在 Qt 5 中 C++ 类的常规 void 方法中时,它可以编译。当我将它放在 slots 方法中时,编译器会生成以下错误:

错误 C2120: 'void' 对所有类型都是非法的

这里声明,可以返回 void:Can I return in void function?

这里声明,由于槽是普通的 C++ 函数,我猜它可能会返回值,包括 void。 http://www.qtcentre.org/archive/index.php/t-26724.html

任何想法为什么在这种情况下发布 C2120?

【问题讨论】:

  • 这是哪个编译器和版本?你能在在线编译器上重现它吗?
  • 别担心;无论如何,这个问题将作为题外话关闭,因为这是一个容易调试的简单错误。

标签: c++ compiler-errors qt5


【解决方案1】:

您只能从 void 函数返回 void。例如:

void foo()
{
  return void();
}

否则你可以返回喜欢

void foo()
{
  return;
}

它本身就是无效的。

如该示例中所述,但您无法返回任何其他内容,这就是出现错误的原因。

【讨论】:

  • 问题说错误是通过返回void触发的,而不是“其他任何东西”。
猜你喜欢
  • 2015-06-02
  • 2017-12-04
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 2019-07-30
  • 2011-06-16
  • 2012-02-08
相关资源
最近更新 更多