如果你知道这个问题,
假设我有一个其CTOR接收整数的A类;
我无法做到以下几点:
A* arr = new A[3](A(2), A(3), A(5));
或者初始化数组的几个成员的任何其他方式。 我读到了,这是不可能的。
我的问题是为什么,我为什么要这样做
A arr[3] = {A(1), A(2), A(3)};
但我不能做到以上?记忆方式或其他。
非常感谢!
答案 0 :(得分:9)
在当前标准C ++(称为C ++ 03)中无法执行此操作的原因是历史性的。这将在即将推出的C ++标准中进行清理(目前预计将在今年发布,这将使其成为C ++ 11),这将引入所谓的“统一初始化语法”。
根据Stroustrup's C++0x FAQ,您可以写
A* p = new A[3] {A(1), A(2), A(3)};
你的编译器实际上已经很有可能支持这个了。
答案 1 :(得分:0)
我相信你正在尝试进行“统一初始化”,它包含在C ++ 0x中。我不明白为什么初始化列表使用A(int)
部分,我只是这样做(这是C ++ 98/03接受的:
A arr[3] = {1, 2, 3};