C++11 initializer_list не работает для буквального значения константы встроенного объекта?
У меня есть простая программа на 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 ответ
Решение
Так как ваш тип A
содержит только один элемент данных (типа int
), вы можете иметь не более одного элемента в вашем инициализаторе:
struct A{
int i;
struct B{
int i;
int j;
};
} a = {2}; // OK, a.i == 2
(Дело в том, что A
также содержит член типа (A::B
) не имеет значения для создания объектов типа A
.)