【发布时间】:2020-05-31 13:24:24
【问题描述】:
有一个函数声明为
CalculateTimeSilence(float SilenceThresholdOverride = -1.f);
有没有办法调用它,以便我可以利用条件“?”运算符来选择 SilenceThresholdOverride 的值还是保留默认值?
用伪代码表示:
CalculateTimeSilence(bUseOverride ? OverrideValue : default);
,其中 'default' 将被编译器替换为参数在其声明中的默认值(在本例中为 -1.f)。 如果有这样的方法,它将消除匹配默认值或编写 If-Else 语句的需要。
谢谢, 塞巴斯蒂安
【问题讨论】:
-
bUseOverride ? CalculateTimeSilence(OverrideValue) : CalculateTimeSilence();怎么样? -
@songyuanyao 真的。但是,如果函数有很多其他参数,则可能存在不那么漂亮的场景。无论如何,我只是好奇是否存在这样的东西,而不是真正需要它。谢谢!
-
我认为没有。默认参数仅在不向函数传递参数时使用,即
CalculateTimeSilence()的形式。
标签: c++ conditional-operator default-arguments