我有一个函数,最多需要4个参数,它们都是可选的。而且,所有参数都有默认值,用户可以指定他想要的任何参数组合。C++:默认参数的组合
所以,如果我有这样的:
void func (const A &a = A(), const B &b = B(), const C &c = C(), const D &d = D());
用户可以使用它作为func(A(), B())
但不是func(B(), C())
。
有什么办法可以允许每个参数组合而不必创建一堆重载? (在这种情况下,它会是8)
命名参数idiom(aka Builder模式),结构(特别是在C++ 20中有指定的初始值设定项),[Boost参数](http://www.boost.org/doc/libs/1_65_1/libs/parameter /doc/html/index.html)(或类似的库) – Justin
我不认为它现在在那里,'va_arg'允许类似的功能,但我相当肯定不一样。 http://www.cplusplus.com/reference/cstdarg/va_arg/ –
这会被问到很多,但我很少看到它被问到一个没有设计问题的实际实例。也许你是不同的 - 在这种情况下发布你的问题和设计的更多细节。 –