【发布时间】:2011-05-02 18:12:23
【问题描述】:
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 初始值设定项列表能解决问题吗?
P.S.请不要提及向量,boost::arrays,以及它们对数组的优越性,我很清楚。
【问题讨论】:
-
你是否也知道 boost 固定大小数组的存在,它提供了构造函数?
-
@Benoît:我是。但我需要了解普通数组:)
标签: c++ c++11 initializer-list ctor-initializer aggregate-initialization