Как мне инициализировать эту структуру? - PullRequest
1 голос
/ 09 марта 2020

Извините, что не указал c, но ...

Предположим, у меня есть такая структура:

struct OptionData
{
    Desc desc;
    bool boolValue;
    std::string stringValue;
    int intValue;
    double numberValue;
};

, которую я использую следующим образом:

OptionData isWritePatchesOptionData = {isWritePatchesDesc, {}, {}, {}, {}};

Поскольку у меня есть много таких опций, я хотел бы сделать следующее:

<type_here> OptionDataList = {{}, {}, {}, {}};

, поэтому я могу сделать:

OptionData isSeamCutOptionData = {isSeamCutDesc, OptionDataList};

, но на самом деле на месте Я не могу понять, что будет type_here ... Или, может быть, это невозможно в этой форме ... Я имею в виду, без создания объекта OptionDataList в структуре OptionData ... но это явно будет избыточным ...

1 Ответ

2 голосов
/ 09 марта 2020

Просто предоставьте инициализаторы по умолчанию. Использование

struct OptionData
{
    Desc desc{};
    bool boolValue{};
    std::string stringValue{};
    int intValue{};
    double numberValue{};
};

Все в структуре будет инициализированным значением, то есть объекты с конструктором будут создаваться по умолчанию, а объекты без конструктора будут инициализироваться нулями.

Это позволяет писать

OptionData isWritePatchesOptionData = {isWritePatchesDesc}; // same as using {isWritePatchesDesc, {}, {}, {}, {}};
// and
OptionData isSeamCutOptionData = {isSeamCutDesc};

и теперь все остальные члены находятся в состоянии по умолчанию / ноль.

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