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

时间:2013-06-02 02:41:35

标签: c++

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

Object * ArrayOfObjects = new Object[Size];

虽然这会成功创建一个数组,但它不允许我使用构造函数。

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

3 个答案:

答案 0 :(得分:3)

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

for (int i = 0; i < Size; ++i)
{
    ArrayOfObjects[i] = Object( /* call the constructor */ );
}

或者你可以使用矢量来做同样的事情,但更容易使用:

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

答案 1 :(得分:1)

你所要求的可能实际上并不是最好的事情 - 这可能是使用类似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);
}

答案 2 :(得分:0)

一旦你分配了记忆,就像你一样。您可以通过遍历对象数组来初始化每个对象 并调用它的构造函数。

#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
     ...
}