我需要详细说明以下类的构造函数:
class Foo {
public:
const std::vector<Bar> bars;
Foo(int num_bars, ...);
}
为了讨论方便,假设额外的参数都是const Bar&
或者只是Bar
。
我需要在构造时使用va_list中的bars来初始化v。我该怎么做?
我需要详细说明以下类的构造函数:
class Foo {
public:
const std::vector<Bar> bars;
Foo(int num_bars, ...);
}
为了讨论方便,假设额外的参数都是const Bar&
或者只是Bar
。
我需要在构造时使用va_list中的bars来初始化v。我该怎么做?
Foo
改为变参模板:
template <typename ...ArgumentTypes>
Foo(ArgumentTypes&& args...):
bars({std::forward<ArgumentTypes>(args)...})
{
}
这里使用了vector的初始化列表构造函数。
std::forward
确保输入的左值/右值性正确地转发到下一个函数。 - Pradhan