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

标签 c++ function coding-style

在 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/

相关文章:

c++ - 适用于 Android 的 uSTL 或 STLPort?

c++ - 泛型 std::function 上的包装类

javascript - 从 Chrome 开发工具调用内部函数

javascript - 只有 "onload"形式的 JavaScript 函数有效吗?

c++ - 参数中没有指针的函数指针

c++ - 分配 OpenCL 缓冲区时内存地址错误

c++ - 将 2D vector 转换为 C 类型的最佳方法(对于 SGX enclave)

C# 属性封装

javascript - 对于内部包含一项功能的 if 语句,最适合使用哪种语法?

java - 原始 + ""与 Wrapper.toString(原始)