Jus*_*avy 4 c++ arrays lambda c++14
我很难搞清楚这个错误.我承认,我是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_;
}
};
Run Code Online (Sandbox Code Playgroud)
这是错误:
error: ‘selectionFuncs’ declared as array of ‘auto’
Run Code Online (Sandbox Code Playgroud)
从谷歌搜索,似乎在这个实例中使用auto是不允许在C++ 11中但它应该在C++ 14中,但是我必须以某种方式宣布它是错误的并且无法解决它.
非常感谢帮助,谢谢!
C++语言禁止使用声明的数组auto.你有两个很好的选择:函数指针,甚至更好 - std::function.像这样的东西:
std::function<bool(const Vector3&, const Vector3&)> 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_;
},
// ...
};
Run Code Online (Sandbox Code Playgroud)
别忘了#include <functional>.然后你就像使用任何其他函数一样使用数组的元素.
如果只是为了代码方便而不是为了运行时选择而将lambda存储在数组中,则不必将它们存储在数组中.元组可以做同样的事情:
auto selectionFuncs = std::make_tuple(
[&](const Vector3& min, const Vector3& max)
{
return max.x_ == seamValues.x_ || max.y_ == seamValues.y_ || max.z_ == seamValues.z_;
},
//...
Run Code Online (Sandbox Code Playgroud)
但是,如果你真的想运行时的选择,你将不得不投的lambda表达式,以std::functionS或函数指针(在对方的回答进一步解释),因为这是C++的类型系统如何与函数和lambda表达式(lambda表达式是不同的类型,但可以投如果他们是无国籍的话,他们各自的功能类型.
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |