You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++三元运算符无法用于结构体初始化?求排查问题

问题分析与解决

你的问题出在条件运算符(?:)的类型推导规则上:直接用大括号初始化列表作为?:的两个分支时,编译器无法推断出它们的共同类型——因为大括号列表本身没有明确的类型,没法和CalculatorPair关联起来,这才是编译器报错的真正原因(报错信息只是表面现象)。

解决方法

显式将两个分支构造为CalculatorPair对象即可,有两种写法:

写法1:统一用大括号显式构造

CalculatorPair calculator = getCondition() ? CalculatorPair{ computeInitialWay1, computeFinalWay1 } : CalculatorPair{ computeInitialWay2, computeFinalWay2 };

写法2:用圆括号调用构造函数

CalculatorPair calculator = getCondition() ? CalculatorPair(computeInitialWay1, computeFinalWay1) : CalculatorPair(computeInitialWay2, computeFinalWay2);

补充说明

C++标准要求?:的两个操作数必须能转换为同一类型。当你直接写{...}时,编译器只能看到无类型的初始化列表,无法自动将其匹配到CalculatorPair的构造函数,必须显式指定类型才能完成推导。

内容的提问来源于stack exchange,提问作者lnlyprog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:20:40