C ++ 11 Правильная инициализация структуры - PullRequest
9 голосов
/ 04 марта 2012

Имея такую ​​структуру в C ++ 11:

struct von
{
    std::string Name;
    unsigned int ID;
    std::vector<std::string> Checks;
};

Должна ли она быть инициализирована так:

    von v = {"",0,{}};

Или вот так:

    von v = {};

Кажется, что оба способа работают, но компилятор предупреждает об инициализации -Wmissing-field-initializers в последнем примере.

Редактировать: Вот мои параметры компилятора: g ++ main.cpp -ansi -Wall -Wextra -Weffc ++ -std = c ++ 0x.Я использую g ++ (Debian 4.6.2-12) 4.6.2

1 Ответ

1 голос
/ 04 марта 2012

Это вообще не требует initializer_list и прекрасно работает с C ++ 03.Редактировать: (Хорошо, для инициализации вектора вам нужен C ++ 11) При инициализации структуры или массива все не явно заданные значения инициализируются нулями, так что если вы хотите = {};будет работать просто отлично.

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