我试图了解如何创建多个对象(在当前情况下为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个对象。
答案 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);