С этим кодом:
struct Structure {
int a;
char b[4];
};
void function() {
int a = 3;
char b[] = {'a', 'b', 'c', 'd'};
}
Могу ли я инициализировать Structure
со значениями a
а также b
используя агрегатную инициализацию?
Я старался Structure{a, b}
Однако это дает мне ошибку cannot initialize an array element of type 'char' with an lvalue of type 'char [4]'
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' );
}
Выход:
1
a b c d