初始化带有多个参数的对象数组

c++03 Initializing a array of objects with multiple parameters

本文关键字:对象 数组 参数 初始化      更新时间:2023-10-16

这可能是一个简单的问题,但我正在尝试使用参数化构造函数初始化对象数组。例如:

class A{
public:
    int b,c,d;
    A (int i, int j);
};
void A::A(int i, int j){
    d = rand()
    b = 2*i;
    c = 3*j;
}
void main(){
    A a[50]; /*Initialize the 50 objects using the constructor*/
}

我已经尝试过这个链接中提到的向量初始化,但是,由于有2个参数,这不起作用。

另外,正如这个链接中提到的,手动输入50个初始化值是不可能的,也是乏味的。

有更简单的方法吗?此外,i,j值对于所有对象(通过main()可用)都是相同的,但d应该是随机值,并且与每个对象不同。

可以使用std::generate

的例子:

A generator(){ return A(1,2); }
std::generate( a, a + (sizeof(a) / sizeof(a[0])), generator );

为什么不为双参数构造函数提供默认参数呢?

A (int i = 0, int j = 0);

那么它将代替默认构造函数,A a[50];将自动使用它50次