c++11 initializer_list 不适用于嵌入对象的文字常量值?
c++11 initializer_list doesn't work for literal constant value of embedded object?
我有一个简单的 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 的对象,如何修复它?
非常感谢。
由于您的类型 A
只包含一个数据成员(int
类型),您的初始化程序中最多可以有一个元素:
struct A{
int i;
struct B{
int i;
int j;
};
} a = {2}; // OK, a.i == 2
(A
还包含类型成员 (A::B
) 的事实对于创建类型 A
的对象并不重要。)
我有一个简单的 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 的对象,如何修复它?
非常感谢。
由于您的类型 A
只包含一个数据成员(int
类型),您的初始化程序中最多可以有一个元素:
struct A{
int i;
struct B{
int i;
int j;
};
} a = {2}; // OK, a.i == 2
(A
还包含类型成员 (A::B
) 的事实对于创建类型 A
的对象并不重要。)