gpt4 book ai didi

c++ - 使用 std::initialiser_list 显式初始化一个变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:56 24 4
gpt4 key购买 nike

这段代码

std::initializer_list<const char*> list {"something", "somthingElse" /*..*/};
const char* array[] = list;

编译失败,错误如下:

array initializer must be an initializer list

毕竟我使用的是 initializer_list,所以无法真正理解我在这里做错了什么。

(我使用 initializer_list 的原因是我可以稍后在我的代码中的几个部分使用 list.size();这很容易出错,必须调整每次我从列表中添加/删除某些内容时都会出现一系列魔术常量)

最佳答案

要初始化数组,您需要一个大括号括起来的初始化列表,它与std::initializer_list 不同。

要获得您想要实现的目标,您可以使用 std::array,但您需要一个辅助函数来推断其大小参数:

#include <array>

template<typename T, typename... Ts>
constexpr std::array<T, sizeof...(Ts)> make_array(Ts... i)
{
return {i...};
}

int main() {
auto a = make_array<const char*>( "a", "b", "c", "d" );
return a.size(); // I get an exit value of 4 here
}

关于c++ - 使用 std::initialiser_list 显式初始化一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005174/

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