有条件地将默认参数传递给函数(使用"?"运算符)
Conditional passing of a default argument to a function (using the '?' operator)
有一个函数声明为
CalculateTimeSilence(float SilenceThresholdOverride = -1.f);
有没有办法调用它,以便我可以利用条件"?"运算符为SilenceThresholdOverride选择一个值或将其保留为默认值?
表示为伪代码:
CalculateTimeSilence(bUseOverride ? OverrideValue : default);
,其中"default"将被编译器替换为参数在其声明中默认为的值(在本例中为 -1.f(。 如果有这样的方法,它将不再需要匹配默认值或编写 If-Else 语句。
谢谢 塞巴斯蒂安
当您调用函数而不指定参数时,则会在调用站点添加默认值,因此当您调用时
CalculateTimeSilence();
然后你实际上是在打电话
CalculateTimeSilence(-1.f);
没有default
或类似的机制来获取默认参数,但您可以"手动"执行此操作
const float default_value = -1.f;
CalculateTimeSilence(float SilenceThresholdOverride = default_value);
然后您可以根据需要调用它:
CalculateTimeSilence(bUseOverride ? OverrideValue : default_value);
但是,虽然条件运算符有时会派上用场,但它通常会混淆代码并使其难以阅读。在这种情况下,我可能宁愿写
auto x = bUseOverride ? OverrideValue : default_value;
CalculateTimeSilence(x);
相关文章:
- 使用++运算符会导致意外的结果
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- C++:无法使用 "=" 运算符更改 std::p air 的值
- 使用运算符调用 void 函数时出错<set>
- 在shared_ptr上使用运算符(如 <<)
- 运算符重载使用运算符+添加类模板
- 使用运算符*重载包装矩阵乘法
- 如何使用运算符在同一行中多次调用函数
- 使用运算符"="在C++中用值初始化对象
- C++:使用运算符 = 调用多参数构造函数
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- 使用'+='运算符统一实现 C++ '+'运算符
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 将 c++ 代码转换为 python,使用运算符?
- std::set<Key,Compare,Allocator>::find() 函数使用"<"运算符而不是"=="运算符背后的直觉是什么?
- 使用运算符重载的两个复数的总和
- 如何使用运算符+重载函数正确返回对象?
- 我们可以使用运算符重载来更改 Minus 的行为吗?
- 使用 || 运算符折叠函数