gpt4 book ai didi

c++ - 条件运算符在 Windows 中成功编译但在 Linux 中出错

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:57 24 4
gpt4 key购买 nike

请帮我找出我在 Linux 环境中使用此语句时遇到的错误的原因。

p_pAphErrorMessage->getSvc()?l_AphUpdateMessage->setSvc(p_pAphErrorMessage->getSvc()):0;
p_pAphErrorMessage->getObj()?l_AphUpdateMessage->setObj(p_pAphErrorMessage->getObj()):0;

这段代码在windows下编译成功,但在Linux环境下报错。

src/aph.cpp:7320: error: âl_AphUpdateMessage->AphMessage::setSvc(((AphUpdateMessage*)p_pAphErrorMessage)->AphUpdateMessage::<anonymous>.AphFidValuesMessage::<anonymous>.AphMessage::getSvc())â has type âvoidâ and is not a throw-expression
src/aph.cpp:7321: error: âl_AphUpdateMessage->AphMessage::setObj(((AphUpdateMessage*)p_pAphErrorMessage)->AphUpdateMessage::<anonymous>.AphFidValuesMessage::<anonymous>.AphMessage::getObj())â has type âvoidâ and is not a throw-expression

我稍微调查了一下,怀疑返回 0;可能是它的原因。我们能否以这种方式使用条件运算符来仅用于 if not for else,例如,

c= a?a:/*DO NOTHING*/;

但是,这样我在编译中没有取得任何成功。任何其他推荐的实现方式。

最佳答案

您必须将零转换为 void,例如

condition ? expression : (void) 0;

原因是 setSvcsetObj 都声明为返回 void(如错误消息中所示)。这意味着您调用它们的表达式的结果是空的。但是另一个“假”表达式是一个有值的表达式。所以三元表达式有一个不返回值的分支和一个返回值的分支,这是不允许的。将“false”表达式转换为 void 使两个分支相同。

关于c++ - 条件运算符在 Windows 中成功编译但在 Linux 中出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19155171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com