我在下面的 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");
}
}
您的代码有两个问题:
- 您缺少内部数组的支撑。
- 如@Praetorian 所述,
colorBlend
在默认情况下没有返回值。
关于c++ - 嵌套 std::array 时结构初始值设定项中的多余元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35021112/