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 标准对在 ctor 初始化程序中初始化聚合(包括数组)有什么特别的说明吗?或者上述代码的无效是其他一些规则的必然结果?
- C++0x 初始化列表能解决问题吗?
PS请不要提及向量,boost::arrays,以及它们对数组的优越性,我很清楚。