如何初始化构造函数需要两个或多个参数的对象数组?

时间:2012-03-11 16:11:02

标签: c++

建议我们有一个A类对象的数组,而A类的构造函数需要两个参数,如下所示:

class A  
{  
public:  
    A( int i, int j ) {}  
};  

int main()  
{
    const A a[3] = { /*How to initialize*/ };

    return 0;
}

如何初始化该数组?

4 个答案:

答案 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)};