具有元素自定义构造函数的对象数组/向量
Array/Vector of Objects with custom constructors for elements
在没有默认构造函数的情况下,在C++中创建对象数组已经有很多问题得到了解答
如何在c++中用构造函数动态声明对象数组
C++中对象的构造函数和数组
我想做的是创建一个数组,允许我为每个元素都有自定义构造函数。
在C++中,最好或最常用的方法是什么
示例:
MyClass *myVar;
myVar = new MyClass[5];
int i = 0;
for(i = 0;i < num;i++)
myVar[i] = new MyClass(i,i);
在这种情况下,您会看到一个指针数组,在for循环中,我们创建了一个具有自定义构造函数参数的对象。然而,我不确定这是否是最好的方式,因为它在堆上分配数据,可能不是连续的,分配问题,添加指针,等等。
我之所以这么问,是因为我不想初始化一个由n个对象组成的数组,只为了用set_data
方法编辑元素。
示例:
[stuff] //initialize array with default values
for(i = 0;i < num;i++)
myVar[i].set_data(i)
因为set_data
可能会编辑一些数据,这些数据应该只有在初始化时才能设置。(当然,set
私有变量可以用于跟踪对象是否已经设置,但这似乎很难处理-还是C++中通常是这样做的?)
首先,您的第一个示例几乎是正确的:您需要一个POINTERS数组,而不是对象:
MyClass **myVar;
myVar = new MyClass*[5];
int i = 0;
for(i = 0;i < num;i++)
myVar[i] = new MyClass(i,i);
首先分配一个指针数组,然后用一个指向指针的指针捕获它。然后分配特定的对象。
对于你的问题,最好的方法不是首先发明轮子!只需使用std::vector!例如,我想创建一个汽车阵列,每个汽车都有不同的公司和颜色:
std::vector<Car> cars;
cars.push_back(Car(Company::Toyota,Color::Red));
cars.push_back(Car(Company::Subaru,Color::Blue));
如果向量已实现,则首先尝试使用move构造函数,如果未实现,则尝试使用-copy构造函数。
相关文章:
- 将对象数组的引用传递给函数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 类对象数组的问题会导致崩溃
- Arduino C++在构造函数中用参数声明对象数组
- 使用对象数组对 SFML 进行动画处理
- C++ 对象数组堆栈溢出
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何初始化对象数组?
- C++创建对象数组
- 在对象数组中搜索字符串并返回相应值的函数
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- 使用 C++ 创建对象数组
- 对象数组打印空白字符串
- 重载运算符 [] 用于从对象数组中给出特定索引
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组