C++98 doesn't provide a direct syntax for anything but zeroing (or for non-POD elements, value-initializing) the array. For that you just write C(): arr() {}.
我认为 Roger Pate 关于所谓的 C + + 0x 聚合初始化的限制是错误的,但是我懒得去查阅它或者检查它,而且这并不重要,不是吗?罗杰说的是“ C + + 03”,我把它误读成了“ C + + 0x”。抱歉,罗杰。
当前代码的一个 C + + 98解决方案是将数组包装在 struct中,并从该类型的静态常量初始化它。无论如何,数据都会存在于某个地方。即兴表演可以是这样的:
class C
{
public:
C() : arr( arrData ) {}
private:
struct Arr{ int elem[3]; };
Arr arr;
static Arr const arrData;
};
C::Arr const C::arrData = \{\{1, 2, 3}};