【发布时间】:2018-05-03 04:23:34
【问题描述】:
我很难弄清楚这个错误。我承认,我是 C++ 新手,我的困难来自于不理解错误信息。
代码如下:
auto selectionFuncs[8] =
{
[&](const Vector3& min, const Vector3& max)
{
return max.x_ == seamValues.x_ || max.y_ == seamValues.y_ || max.z_ == seamValues.z_;
},
[&](const Vector3& min, const Vector3& max)
{
return min.x_ == seamValues.x_;
},
[&](const Vector3& min, const Vector3& max)
{
return min.z_ == seamValues.z_;
},
[&](const Vector3& min, const Vector3& max)
{
return min.x_ == seamValues.x_ && min.z_ == seamValues.z_;
},
[&](const Vector3& min, const Vector3& max)
{
return min.y_ == seamValues.y_;
},
[&](const Vector3& min, const Vector3& max)
{
return min.x_ == seamValues.x_ && min.y_ == seamValues.y_;
},
[&](const Vector3& min, const Vector3& max)
{
return min.y_ == seamValues.y_ && min.z_ == seamValues.z_;
},
[&](const Vector3& min, const Vector3& max)
{
return min.x_ == seamValues.x_ && min.y_ == seamValues.y_ && min.z_ == seamValues.z_;
}
};
这是错误:
error: ‘selectionFuncs’ declared as array of ‘auto’
通过谷歌搜索,在这种情况下使用 auto 似乎在 C++11 中是不允许的,但它应该在 C++14 中,但是我必须以某种方式声明它是错误的并且无法弄清楚。
非常感谢您的帮助,谢谢!
【问题讨论】:
-
不能用
auto声明数组,就这么简单。使用std::function的数组来存储 lambda。 -
@DeiDei 有什么我可以查看的示例在这种情况下会有所帮助吗?你能尽可能地显示语法吗?同时我会谷歌!感谢您的帮助。
-
很确定每个 lambda 的类型与任何其他 lambda 的类型无关(它们都是用于在每次需要特定 lambda 时创建唯一函子实例的语法糖),即使它们表面上看起来相同(原型等),所以是的,需要像
std::function这样的包装器。