gpt4 book ai didi

c++ - (C++14) lambda 数组 : error: 'name' declared as array of 'auto'

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:23 24 4
gpt4 key购买 nike

我很难解决这个错误。我承认,我是 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 中,但是我必须以某种方式声明它是错误的并且无法弄清楚。

非常感谢您的帮助,谢谢!

最佳答案

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_;
},

// ...
};

别忘了 #include <functional> .然后您只需像使用任何其他函数一样使用数组的元素。

关于c++ - (C++14) lambda 数组 : error: 'name' declared as array of 'auto' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50146940/

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