我的构造函数最初采用 astd::vector<>
但我不知道如何获取一个花括号列表来初始化它。我在更改为std:initializer_list<>
. 我找到了两种方法:1)将 initializer_list 作为参数传递给数组构造函数(在下面的代码中注释掉)和 2)使用std::copy
算法(如下面的代码所示)。
现在,我需要用 a 创建这个对象,std::vector<>
但不知道如何将它转换为 initializer_list。我可以制作第二个采用向量的构造函数,但作为练习,我希望尽可能使用一个构造函数。
有任何想法吗?
class One: public Base {
public:
One( Two* ptwo_in, std::initializer_list<Three> ilthree ) :
ptwo( ptwo_in )//,
//athree_( ilthree )
{
athree_.reserve( ilthree .size() );
std::copy( ilthree .begin(), ilthree .end(), athree_.begin() );
}
Two* ptwo_;
std::vector<Three> athree_;
};
// Works fine:
new One( &two, { Three( args ),
Three( args ),
Three( args ), } )
// Doesn't work:
std::vector<Three>* pathreeSomething
athreeOther.push_back( new One( ptwoLocal, *pathreeSomething ) );