【问题标题】:Use param name when calling function with all default parameters in C++在 C++ 中使用所有默认参数调用函数时使用参数名称
【发布时间】:2015-03-15 00:15:29
【问题描述】:

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

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

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

foo(b = 5);

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

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

【问题讨论】:

  • 查找 Boost 参数库。
  • @Brian 正是我需要的,谢谢。

标签: c++ function coding-style


【解决方案1】:

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

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

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

阅读更多关于 Builder 设计模式here(+示例)。

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

【讨论】:

  • 谢谢,我会研究一下 boost 库。
猜你喜欢
  • 2012-11-20
  • 2013-04-26
  • 1970-01-01
  • 2016-12-12
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多