2

使用此代码:

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]'

4

2 回答 2

0
struct S {
    int a;
    char b[4];
};

int main() {
    S s = { 1, {2,3,4,5} };
}

编辑:只需重新阅读您的问题 - 不,您不能那样做。你不能用另一个数组初始化一个数组。

于 2017-03-07T17:37:32.923 回答
0

如果您熟悉参数包扩展,我认为您可以,如下所示:

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
于 2017-03-07T18:52:41.230 回答