C++ 如何使用指针创建此对象数组

C++ 如何使用指针创建此对象数组,c++,C++,基本上,我想创建一个对象数组,其大小从一个类传递到另一个类,即 Object * ArrayOfObjects = new Object[Size]; 虽然它成功地创建了一个数组,但它不允许我使用构造函数 如何创建一个对象数组,然后定义数组中的每个对象?一旦为数组分配内存,就可以通过循环为其分配: for (int i = 0; i < Size; ++i) { ArrayOfObjects[i] = Object( /* call the constructor */ ); }

基本上,我想创建一个对象数组,其大小从一个类传递到另一个类,即

Object * ArrayOfObjects = new Object[Size];
虽然它成功地创建了一个数组,但它不允许我使用构造函数


如何创建一个对象数组,然后定义数组中的每个对象?

一旦为数组分配内存,就可以通过循环为其分配:

for (int i = 0; i < Size; ++i)
{
    ArrayOfObjects[i] = Object( /* call the constructor */ );
}
for(int i=0;i
或者,您可以使用向量执行相同的操作,但更易于使用:

std::vector<Object> ArrayOfObjects = { Object(...), Object(...) };
std::vector ArrayOfObjects={Object(…),Object(…)};

为阵列分配内存后,您可以通过循环为其分配:

for (int i = 0; i < Size; ++i)
{
    ArrayOfObjects[i] = Object( /* call the constructor */ );
}
for(int i=0;i
或者,您可以使用向量执行相同的操作,但更易于使用:

std::vector<Object> ArrayOfObjects = { Object(...), Object(...) };
std::vector ArrayOfObjects={Object(…),Object(…)};

一旦您分配内存,就像您分配内存一样。通过遍历对象数组来初始化每个对象 并调用其构造函数

#include<iostream>
using namespace std;
class Obj
{
    public:
    Obj(){}
    Obj(int i) : val(i)
    {
        cout<<"Initialized"<<endl;
    }
    int val;
};
int allot(int size)
{

    Obj *x= new Obj[size];
    for(int i=0;i<10;i++)
        x[i]=Obj(i);

     //process as you need
     ...
}
#包括
使用名称空间std;
Obj类
{
公众:
Obj(){}
Obj(内部i):val(i)
{

cout一旦你分配了内存,你就可以通过遍历对象数组来初始化每个对象 并调用其构造函数

#include<iostream>
using namespace std;
class Obj
{
    public:
    Obj(){}
    Obj(int i) : val(i)
    {
        cout<<"Initialized"<<endl;
    }
    int val;
};
int allot(int size)
{

    Obj *x= new Obj[size];
    for(int i=0;i<10;i++)
        x[i]=Obj(i);

     //process as you need
     ...
}
#包括
使用名称空间std;
Obj类
{
公众:
Obj(){}
Obj(内部i):val(i)
{

cout你所问的可能实际上不是最好的事情——可能是使用std::vector之类的东西,但在幕后他们要做的是你的问题所问的

然后,您可以为每个条目指定或放置新条目:

for (size_t i = 0; i < Size; ++i)
{
     // Option 1: create a temporary Object and copy it.
     ArrayOfObjects[i] = Object(arg1, arg2, arg3);
     // Option 2: use "placement new" to call the instructor on the memory.
     new (ArrayOfObjects[i]) Object(arg1, arg2, arg3);
}
(大小i=0;i { //选项1:创建一个临时对象并复制它。 ArrayOfObjects[i]=对象(arg1、arg2、arg3); //选项2:使用“placement new”(新位置)呼叫记忆中的讲师。 新的(ArrayOfObjects[i])对象(arg1、arg2、arg3); }
你要问的可能不是最好的事情——可能是使用std::vector之类的东西,但在幕后,他们要做的就是你的问题所问的

然后,您可以为每个条目指定或放置新条目:

for (size_t i = 0; i < Size; ++i)
{
     // Option 1: create a temporary Object and copy it.
     ArrayOfObjects[i] = Object(arg1, arg2, arg3);
     // Option 2: use "placement new" to call the instructor on the memory.
     new (ArrayOfObjects[i]) Object(arg1, arg2, arg3);
}
(大小i=0;i { //选项1:创建一个临时对象并复制它。 ArrayOfObjects[i]=对象(arg1、arg2、arg3); //选项2:使用“placement new”(新位置)呼叫记忆中的讲师。 新的(ArrayOfObjects[i])对象(arg1、arg2、arg3); }
您必须循环遍历数组并创建每个对象。您的语句只是为数组分配内存,而不是初始化对象。(想想,如果对象是抽象类怎么办?)可能重复:您必须在数组中循环并创建每个对象。您的语句只是为数组分配内存,它不会初始化对象。(想想,如果对象是抽象类怎么办?)可能重复: