gpt4 book ai didi

c++ - 在构造函数的初始化列表中使用 std::initializer_list 初始化 std::array

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:48 28 4
gpt4 key购买 nike

<分区>

考虑以下代码:

struct foo {
std::vector<int> v;
foo(std::initializer_list<int> L) : v{L} {}
};

上面的代码可以正常编译并按预期初始化 v。现在考虑以下代码:

struct bar {
std::array<int, 3> a;
bar(std::initializer_list<int> L) : a{L} {}
};

上面这段代码给出了一个编译错误。

error: no viable conversion from 'std::initializer_list' to 'int'

在网上搜索我发现用 std::list_initializer 初始化成员 std::array 的“正确”方法是使用 reinterpret_cast 以下列方式:

bar(std::initializer_list<int> L) : a(reinterpret_cast<std::array<int, 3> const&>(*(L.begin()))) {}

问:

为什么我可以在构造函数的初始化列表中使用 std::initializer_list 初始化成员 std::vector 但我不能初始化成员 std::array?

上面显示的使用 reinterpret_cast 的解决方法是否是使用 std::initializer_list 初始化成员 std::array 的正确方法?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com