创建多个对象并通过构造函数传递参数

时间:2019-04-23 06:09:18

标签: c++

我试图了解如何创建多个对象(在当前情况下为20),并将参数传递给构造函数,如代码注释中所示。不幸的是,我不能同时传递参数以及同时具有对象数组。

我也尝试过创建对象convector con(100,200,Construct(20));但似乎并没有达到预期的效果

#include <iostream>

class construct { 
public: 
    int a, b; 

    // Default Constructor 
    construct(int x1,int x2) 
    { 
         a = x1; 
         b = x2; 
    } 
    int getX1(){
        return a;
    }
    int getX2(){
        return b;
    }
};  
int main(){
    int p,q;
    construct* con = new construct[20](100,200);

for (unsigned int i = 0; i < 20; i++) {
    p=con[i]->getX1();
        q=con[i]->getX2();
        printf("%d %d \n",p,q);
    }
    delete con;
    return 1;
}

预期结果将是创建20个对象。

2 个答案:

答案 0 :(得分:4)

只需使用std::vector。认真地说,没有理由不这样做。

std::vector<construct> con(20, {100, 200});

答案 1 :(得分:-1)

是的,为此,您可能需要悲伤地重新放置(或使用std :: vector并将新构造的对象作为第二个参数传递)。

// call global new (effectively malloc, and will leave objects uninitialised)
construct* con = (construct*)::operator new (sizeof(construct) * 20);

// now call the ctor on each element using placement new
for(int i = 0; i < 20; ++i)
  new (con + i) construct(100, 200);