在 C++ 中,如果我有一个带有所有默认参数的函数:
void foo(int a = 9, int b = 3);
我可以用参数名称调用它吗?喜欢:
foo(b = 5);
网上查了一下,好像不能绕过第一个参数,指定第二个参数的值。
问题是我想要一个函数来初始化一个结构。它接受随机数量的结构成员的值,然后使用默认值初始化其他成员。我怎样才能做到这一点?
最佳答案
你不能直接这样做,因为 c++ 支持函数调用中的按顺序参数。
您可以通过创建一个带有通过引用返回 itslef 的 setter 的结构来实现您的目标,然后您可以链接您的调用:
MyStruct s;
s.set_a(8).set_b(3453).set_whatever("Hellow world");
阅读有关 Builder 设计模式的更多信息 here (+示例)。
或者,如果您坚持使用函数参数的名称,您可以尝试 boost parameter图书馆。
关于c++ - 在 C++ 中使用所有默认参数调用函数时使用参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29055823/