class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
我相信原因是数组只能使用
=
语法进行初始化,即:int arr[3] = {1,3,4};
问题
- 我怎样才能做到我想做的事情(也就是,在构造函数中初始化一个数组(而不是在函数体中赋值))。这样做可能吗?
- C++03标准是否对在构造函数初始化器中初始化聚合体(包括数组)有特殊规定?或者上述代码的无效性是其他规则的必然结果?
- C++11的列表初始化是否解决了这个问题?
请注意,我不想使用std::array
或其他容器来解决这个问题。