auto - if 内部定义参数的方式

问题描述 投票:0回答:1

我想在 if 内部定义一个参数。例如

if(MyDataPtr && auto* InfoPtr = MyDataPtr ->extractInfo())

还有gen编译错误

Expected ')'
难道不可能吗?或者可以做什么? - 我不喜欢下面的代码 - 寻找更好(优雅)的实现

if(MyDataPtr)
{
   auto* InfoPtr = MyDataPtr ->extractInfo();
   if (InfoPtr )
     //some code
}
c++ if-statement c++14 auto
1个回答
0
投票

不幸的是你不能在表达式中间定义变量。但是您可以将变量定义为单个表达式并将其用作条件,这将稍微简化您的代码: if (MyDataPtr) { if (auto InfoPtr = MyDataPtr->extractInfo()) { // Use InfoPtr... } }

是不是更“优雅”?也许对某些人来说。

© www.soinside.com 2019 - 2024. All rights reserved.