gpt4 book ai didi

c++ - 嵌套 std::array 时结构初始值设定项中的多余元素

转载 作者:太空狗 更新时间:2023-10-29 23:49:58 39 4
gpt4 key购买 nike

我在下面的 return 行中得到 Excess elements in struct initializer:

using triangleColor = std::array<std::array<float, 4>, 3>;

triangleColor colorBlend(TriangleColorBlend c){
switch (c) {
case TriangleColorBlend::white:
return {{1.0,1.0,1.0,1.0},{0.7,0.7,0.7,1.0},{0.5,0.5,0.5,1.0}};
break;

... // other cases
}
}

我希望花括号字面值能以嵌套方式工作,因为如果我只使用一个 std::array 而不是嵌套,它就可以正常工作。

上述是否根本不可能,为什么不呢?

请注意,建议的重复项并没有真正解决 std::array 在嵌套情况下的奇怪行为。

最佳答案

triangleColor colorBlend(TriangleColorBlend c) {
switch (c) {
case TriangleColorBlend::white:
return {{
{{ 1.0f, 1.0f, 1.0f, 1.0f }},
{{ 0.7f, 0.7f, 0.7f, 1.0f }},
{{ 0.5f, 0.5f, 0.5f, 1.0f }}
}};
default:
throw std::invalid_argument("c");
}
}

Online Demo

您的代码有两个问题:

  1. 您缺少内部数组的支撑。
  2. 如@Praetorian 所述,colorBlend 在默认情况下没有返回值。

关于c++ - 嵌套 std::array 时结构初始值设定项中的多余元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35021112/

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