首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修复程序文件中具有动态数组的C++嵌套结构

修复程序文件中具有动态数组的C++嵌套结构
EN

Stack Overflow用户
提问于 2020-04-24 17:40:55
回答 1查看 41关注 0票数 0

我正尝试在一个头文件中定义一堆结构。例如:

代码语言:javascript
复制
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.    
};

用于在主文件或源文件中的简单使用。我们想要定义结构构造函数。例如:

代码语言:javascript
复制
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中定义构造函数?

代码语言:javascript
复制
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++的新手,所以我不知道怎么写。有人能提供一些想法吗?

谢谢。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-24 18:18:07

选项1:通过定义默认构造函数使Secondstruct成为默认可构造的。

选项2:不要直接创建Secondstruct的动态数组,而是创建足够大的原始字节的动态数组。然后使用std::uninitialized_fill重用存储。

最好的选择:改用std::vector,它做了选项2中听起来很复杂的事情,而且没有内存泄漏和未定义的行为,而自定义的实现动态数组无疑会受到这些问题的影响。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61405406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档