我正尝试在一个头文件中定义一堆结构。例如:
struct Firststruct{
int useless;
};
struct Secondstruct{
Firststruct* struct1; // we want to have a dynamic array here.
};
struct Thirdstruct{
Secondstruct* struct2; // we want to have a dynamic array here.
};用于在主文件或源文件中的简单使用。我们想要定义结构构造函数。例如:
struct Secondstruct{
Firststruct* struct1; // we want to have a dynamic array here.
// constructor
Secondstruct(int num_struct1){
struct1 = new Firststruct[num_struct1];
};
// deconstructor
blablabla
};所以这里有一个问题,我们如何在Thridstruct中定义构造函数?
struct Thirdstruct{
Secondstruct* struct2; // we want to have a dynamic array here.
// constructor
Thirdstruct(int num_struct2){
struct2 = new Secondstruct[num_struct2]; // this of couse does not work.
};
// deconstructor
blablabla
};我是C++的新手,所以我不知道怎么写。有人能提供一些想法吗?
谢谢。:)
发布于 2020-04-24 18:18:07
选项1:通过定义默认构造函数使Secondstruct成为默认可构造的。
选项2:不要直接创建Secondstruct的动态数组,而是创建足够大的原始字节的动态数组。然后使用std::uninitialized_fill重用存储。
最好的选择:改用std::vector,它做了选项2中听起来很复杂的事情,而且没有内存泄漏和未定义的行为,而自定义的实现动态数组无疑会受到这些问题的影响。
https://stackoverflow.com/questions/61405406
复制相似问题