我得到Excess elements in struct initializer的return下面的一行:
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
}
}
Run Code Online (Sandbox Code Playgroud)
我希望花括号文字能够以嵌套方式工作,因为如果我只使用一个 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");
}
}
Run Code Online (Sandbox Code Playgroud)
您的代码有两个问题:
colorBlend默认情况下没有返回值。| 归档时间: |
|
| 查看次数: |
6503 次 |
| 最近记录: |