基本上我想创建与从一类通过传递到另一个即将如何使用指针
Object * ArrayOfObjects = new Object[Size];
虽然成功地创建了一个阵列的大小的对象的阵列,它不允许我使用构造函数。
如何创建我的对象数组然后定义数组中的每个对象?
基本上我想创建与从一类通过传递到另一个即将如何使用指针
Object * ArrayOfObjects = new Object[Size];
虽然成功地创建了一个阵列的大小的对象的阵列,它不允许我使用构造函数。
如何创建我的对象数组然后定义数组中的每个对象?
一旦你为数组分配内存,然后你可以通过循环分配给它:
for (int i = 0; i < Size; ++i)
{
ArrayOfObjects[i] = Object(/* call the constructor */);
}
或者你可以使用一个向量做同样的,但更多的易用性:
std::vector<Object> 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 ::向量或东西,但引擎盖下是什么,他们要做的就是你无论如何,问题都会问到。
然后你就可以分配或放置新的每一个条目:
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);
}
你必须遍历数组,并创建每个对象。你的语句只是为一个数组分配内存,它不会初始化这些对象。 (想想,如果Object是一个抽象类呢?) – GJK
可能的重复:http://stackoverflow.com/questions/4754763/c-object-array-initialization-without-default-constructor – jrd1