【发布时间】:2015-12-10 07:02:19
【问题描述】:
截至目前,我有一个班级Permutation,其中有:
public:
int elements[N];
Permutation(std::initializer_list<size_t> data): elements(data) {};
但是当我尝试编译时,我得到了这个:
错误:数组初始化器必须是初始化器列表
我已经用谷歌搜索了初始化列表,尽管没有什么有用的/我能理解的。所以我对如何使用初始化列表一无所知。
如何编写这个构造函数?
更新
我也有这个版本:
public:
int elements[N];
Permutation(std::initializer_list<size_t> data): elements(new int[N]) {
std::copy(data.begin(), data.end(), elements.begin(), elements.end());
}
我很确定它更错了,但如果可以修复,有人可以告诉我该怎么做吗?
【问题讨论】:
-
像
{1, 2, 3}这样的初始化列表不应与std::initializer_list混淆。 IMO 标准委员会真的搞砸了。 -
std::vector支持从std::initializer_list参数初始化。 -
@JoachimPileborg 所以你是说如果我想做这样的事情就不需要它
Permutation<3> tau {0, 2, 1};? -
@M.M:不,
std::array不支持std::initializer_list。 -
我是说你不能使用
std::initializer_list来初始化一个数组,你需要在构造函数体中使用一个循环来从std::initializer_list初始化数组中的每个元素。哦,当你有一个int数组时,为什么你有一个std::initializer_list<size_t>?不应该是std::initializer_list<int>吗?
标签: c++ arrays class constructor initializer-list