建议我们有一个A类对象的数组,而A类的构造函数需要两个参数,如下所示:
class A
{
public:
A( int i, int j ) {}
};
int main()
{
const A a[3] = { /*How to initialize*/ };
return 0;
}
如何初始化该数组?
答案 0 :(得分:9)
说:
const A a[3] = { {0,0}, {1,1}, {2,2} };
在较旧的编译器上,假设A
具有可访问的复制构造函数,您必须说:
const A a[3] = { A(0,0), A(1,1), A(2,2) };
C ++在数组方面相当缺乏(某些初始化根本不可能),而且在C ++ 11中有所改善。
答案 1 :(得分:1)
只要该类型具有复制构造(无论是合成的还是明确定义的),以下工作:
A array[] = { A(1, 3), A(3, 4), A(5, 6) };
这项工作同时适用于C ++ 2003和C ++ 2011.KerrekSB发布的解决方案当然不适用于C ++ 2003,但可能适用于C ++ 2011(我不确定它是否适用于此)。
答案 2 :(得分:0)
您可以提供默认构造函数并正常初始化数组。初始化成功后,使用循环为每个成员重新分配值
答案 3 :(得分:0)
我认为应该是这样的
const A a [3] = {A(1,2),A(3,4),A(5,6)};