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

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

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

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

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

foo(b = 5);

网上查了一下,好像不能绕过第一个参数,指定第二个参数的值。

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

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

您可以通过创建一个带有设置器的结构来实现您的目标,return 通过引用它自己,然后您可以链接您的调用:

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

阅读有关构建器设计模式的更多信息here(+示例)。

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