Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将默认参数有条件地传递给函数(使用';?';运算符)_C++_Conditional Operator_Default Arguments - Fatal编程技术网

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()
的形式。