C++ 将默认参数有条件地传递给函数(使用';?';运算符)
有一个函数声明为C++ 将默认参数有条件地传递给函数(使用';?';运算符),c++,conditional-operator,default-arguments,C++,Conditional Operator,Default Arguments,有一个函数声明为 CalculateTimeSilence(float SilenceThresholdOverride = -1.f); 是否有方法调用它,以便我可以利用条件“?”运算符为SilenceThresholdOverride选择一个值,或将其保留为默认值 表示为伪代码: CalculateTimeSilence(bUseOverride ? OverrideValue : default); ,其中“default”将由编译器替换,由参数在其声明中的默认值替换(-1.f)。 如
CalculateTimeSilence(float SilenceThresholdOverride = -1.f);
是否有方法调用它,以便我可以利用条件“?”运算符为SilenceThresholdOverride选择一个值,或将其保留为默认值
表示为伪代码:
CalculateTimeSilence(bUseOverride ? OverrideValue : default);
,其中“default”将由编译器替换,由参数在其声明中的默认值替换(-1.f)。
如果有这样一种方法,就不需要匹配默认值或编写If-Else语句
谢谢,
Sebastian当您在调用函数时没有指定参数,那么默认值将添加到调用位置,因此当您调用
CalculateTimeSilence();
那你真的打电话来了
CalculateTimeSilence(-1.f);
没有default
或类似的机制来获取默认参数,但您可以“手动”执行此操作
然后您可以根据需要调用它:
CalculateTimeSilence(bUseOverride ? OverrideValue : default_value);
然而,虽然条件运算符有时很方便,但它通常会混淆代码并使其难以读取。在这种情况下,我可能更愿意写信
auto x = bUseOverride ? OverrideValue : default_value;
CalculateTimeSilence(x);
如果调用函数时未指定参数,则在调用站点添加默认值,因此在调用
CalculateTimeSilence();
那你真的打电话来了
CalculateTimeSilence(-1.f);
没有default
或类似的机制来获取默认参数,但您可以“手动”执行此操作
然后您可以根据需要调用它:
CalculateTimeSilence(bUseOverride ? OverrideValue : default_value);
然而,虽然条件运算符有时很方便,但它通常会混淆代码并使其难以读取。在这种情况下,我可能更愿意写信
auto x = bUseOverride ? OverrideValue : default_value;
CalculateTimeSilence(x);
bUseOverride怎么样?CalculateTimeSilence(OverrideValue):CalculateTimeSilence()代码>?@songyuanyao是真的。但是,如果函数还有很多其他参数,则可能会出现这样的情况。在任何情况下,我只是好奇这样的东西是否存在,而不是实际需要它。谢谢我认为不会。只有在不向函数传递任何参数时才会使用默认参数,即以CalculateTimeSilence()
的形式。那么bUseOverride如何?CalculateTimeSilence(OverrideValue):CalculateTimeSilence()代码>?@songyuanyao是真的。但是,如果函数还有很多其他参数,则可能会出现这样的情况。在任何情况下,我只是好奇这样的东西是否存在,而不是实际需要它。谢谢我认为不会。只有在不向函数传递任何参数时才会使用默认参数,即以CalculateTimeSilence()
的形式。