c ++ 11 initializer_list не работает для буквального значения константы встроенного объекта? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть простая программа на c ++ 11:

struct A{
    int i;
    struct B{
        int i;
        int j;
    };
} a = {2, {3, 4}};

g ++ - 7 компилируется и выдает ошибку:

error: too many initializers for 'A'
 }a={2,{3,4}};
            ^

Мне просто интересно, как я могу объявитьобъект A, использующий буквальные константы, как это исправить?

Большое спасибо.

1 Ответ

0 голосов
/ 06 февраля 2019

Поскольку ваш тип A содержит только один элемент данных (типа int), вы можете иметь не более одного элемента в инициализаторе:

struct A{
    int i;
    struct B{
        int i;
        int j;
    };
} a = {2};   // OK, a.i == 2

(тот факт, что Aтакже содержит член типа (A::B), несущественный для создания объектов типа A.)

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