C++ c++;-使用聚合初始化初始化数组成员
使用此代码:C++ c++;-使用聚合初始化初始化数组成员,c++,initialization,aggregate,braces,aggregate-initialization,C++,Initialization,Aggregate,Braces,Aggregate Initialization,使用此代码: struct Structure { int a; char b[4]; }; void function() { int a = 3; char b[] = {'a', 'b', 'c', 'd'}; } 我可以使用聚合初始化用a和b的值初始化Structure吗? 我尝试了结构{a,b},但是这给了我一个错误无法用类型为'char[4]'的左值初始化'char'类型的数组元素。 struct S { int a; char b
struct Structure {
int a;
char b[4];
};
void function() {
int a = 3;
char b[] = {'a', 'b', 'c', 'd'};
}
我可以使用聚合初始化用a
和b
的值初始化Structure
吗?我尝试了
结构{a,b}
,但是这给了我一个错误无法用类型为'char[4]'的左值初始化'char'类型的数组元素。
struct S {
int a;
char b[4];
};
int main() {
S s = { 1, {2,3,4,5} };
}
编辑:重读你的问题-不,你不能那样做。您不能用另一个数组初始化数组。如果您熟悉参数包扩展我认为您可以,如下所示:
struct Structure {
int a;
char b[4];
};
template< typename... I, typename... C>
void function(I... a, C... b) {
Structure s = { a..., b... }; // <- here -> a = 1 and b = 'a','b','c','d'
std::cout << s.a << '\n';
for( char chr : s.b ) std::cout << chr << ' ';
}
int main(){
function( 1, 'a','b','c','d' );
}
如果您通过
std::array
同时更改char b[]
,则是。
1
a b c d