在C++使用所有默认参数调用函数时使用参数名称

Use param name when calling function with all default parameters in C++

本文关键字:参数 函数 调用 默认 C++      更新时间:2023-10-16

在C++中,如果我有一个包含所有默认参数的函数:

void foo(int a = 9, int b = 3);

我可以用参数名称来称呼它吗?喜欢:

foo(b = 5);

当我在线搜索时,似乎无法绕过第一个参数并指定第二个参数的值。

问题是我想有一个函数来初始化结构。它接受结构成员的随机数量的值,然后使用默认值初始化其他成员。我怎样才能做到这一点?

你不能直接这样做,因为 c++ 支持函数调用中的按顺序参数。

您可以通过创建一个带有通过引用返回其 setter 的结构来实现您的目标,然后您可以链接您的调用:

MyStruct s;
s.set_a(8).set_b(3453).set_whatever("Hellow world");

在此处阅读有关生成器设计模式的更多信息(+示例)。

或者,如果您坚持使用按名称的函数参数,则可以尝试 boost 参数库。