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及其对数组的优越性,我很清楚。
您是否还知道存在提供构造函数的boost固定大小数组?
—
贝诺
@Benoît:我是。但是我需要了解普通数组:)
—
Armen Tsirunyan 2010年