C ++ вложенная структура с массивом Dynami c в файле целителя - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь определить группу структур в заголовочном файле. Например:

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 ++, поэтому я не знаю, как писать Это. Может ли кто-нибудь предоставить некоторые идеи?

Спасибо. :)

1 Ответ

3 голосов
/ 24 апреля 2020

Опция 1: сделать Secondstruct конструируемым по умолчанию, определив конструктор по умолчанию.

Опция 2: не создавать динамический c массив Secondstruct напрямую, а вместо него динамический c массив необработанных байтов достаточного размера. Затем повторно используйте хранилище с std::uninitialized_fill.

Лучший вариант: используйте вместо этого std::vector, который выполняет сложное звучание из варианта 2, а также не имеет утечек памяти и неопределенного поведения, что пользовательская попытка реализации Dynami * Массив 1012 * несомненно пострадает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...