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);
}
您必须循环遍历数组并创建每个对象。您的语句只是为数组分配内存,而不是初始化对象。(想想,如果对象是抽象类怎么办?)可能重复:您必须在数组中循环并创建每个对象。您的语句只是为数组分配内存,它不会初始化对象。(想想,如果对象是抽象类怎么办?)可能重复: