Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有自定义元素构造函数的对象数组/向量 在C++中,如果没有默认构造函数,就已经存在许多问题了。_C++_Arrays_Constructor - Fatal编程技术网

具有自定义元素构造函数的对象数组/向量 在C++中,如果没有默认构造函数,就已经存在许多问题了。

具有自定义元素构造函数的对象数组/向量 在C++中,如果没有默认构造函数,就已经存在许多问题了。,c++,arrays,constructor,C++,Arrays,Constructor,我想做的是创建一个数组,它允许我为每个元素创建自定义构造函数 < > C++中最好的或最惯用的方法是什么?< /强> 例如: MyClass *myVar; myVar = new MyClass[5]; int i = 0; for(i = 0;i < num;i++) myVar[i] = new MyClass(i,i); [stuff] //initialize array with default values for(i = 0;i < num;i++)

我想做的是创建一个数组,它允许我为每个元素创建自定义构造函数

< > C++中最好的或最惯用的方法是什么?< /强>

例如:

MyClass *myVar;
myVar = new MyClass[5];
int i = 0;
for(i = 0;i < num;i++)
   myVar[i] = new MyClass(i,i);
[stuff] //initialize array with default values
for(i = 0;i < num;i++)
   myVar[i].set_data(i)

因为
set_data
可能会编辑一些数据,而这些数据只能在初始化时设置。(当然,<代码> SET/COD>私有变量可以用来跟踪一个对象是否已经设置,但是这似乎是不方便的,或者这是C++中通常做的吗?)

< P>首先,你的第一个例子几乎是正确的:你需要一个指针数组,而不是对象:

MyClass **myVar;
myVar = new MyClass*[5];
int i = 0;
for(i = 0;i < num;i++)
   myVar[i] = new MyClass(i,i);
MyClass**myVar;
myVar=新的MyClass*[5];
int i=0;
对于(i=0;i
首先,分配一个指针数组,并用指向指针的指针捕捉它。然后分配特定的对象

关于你的问题,最好的办法不是一开始就发明轮子!只要使用std::vector! 例如,我想创建一个汽车阵列,每个汽车都有不同的公司和颜色:

std::vector<Car> cars;
cars.push_back(Car(Company::Toyota,Color::Red));
cars.push_back(Car(Company::Subaru,Color::Blue));
std::矢量车;
汽车。向后推(汽车(公司:丰田,颜色:红色));
汽车。向后推(汽车(公司:斯巴鲁,颜色:蓝色));

向量首先尝试使用move构造函数(如果已实现),如果未实现,则使用-copy构造函数。

首先,您的第一个示例几乎是正确的:您需要的是指针数组,而不是对象:

MyClass **myVar;
myVar = new MyClass*[5];
int i = 0;
for(i = 0;i < num;i++)
   myVar[i] = new MyClass(i,i);
MyClass**myVar;
myVar=新的MyClass*[5];
int i=0;
对于(i=0;i
首先,分配一个指针数组,并用指向指针的指针捕捉它。然后分配特定的对象

关于你的问题,最好的办法不是一开始就发明轮子!只要使用std::vector! 例如,我想创建一个汽车阵列,每个汽车都有不同的公司和颜色:

std::vector<Car> cars;
cars.push_back(Car(Company::Toyota,Color::Red));
cars.push_back(Car(Company::Subaru,Color::Blue));
std::矢量车;
汽车。向后推(汽车(公司:丰田,颜色:红色));
汽车。向后推(汽车(公司:斯巴鲁,颜色:蓝色));

向量首先尝试使用移动构造函数,如果没有实现,则复制构造函数。

yUp,不用担心示例代码,它们是更多的伪代码(我主要是寻找C++中的方法,因为我来自高级语言)。我想是吧!如果你是C++新手,那么我建议尽可能多使用STL。矢量和地图是你们最好的朋友!你可以创建一个模板类typte T。这个类应该有一个指向数组类型T的指针。然后用你自己的构造函数创建你自己的类。现在你可以使用模板类中的指针来指向你自己的类。YUP,不用担心样本代码,它们是更多的伪代码(我主要是寻找C++中的方法,因为我来自高级语言)。我想是吧!如果你是C++新手,那么我建议尽可能多使用STL。矢量和地图是你们最好的朋友!你可以创建一个模板类typte T。这个类应该有一个指向数组类型T的指针。然后用你自己的构造函数创建你自己的类。现在可以使用模板类中的指针指向自己的类。