gpt4 book ai didi

c++ - 将 std::any_of 与 lambda 一起调用重载相等运算符

转载 作者:行者123 更新时间:2023-11-28 00:14:28 26 4
gpt4 key购买 nike

我有以下类(class):

Class Foo {
public:
bool operator ==(const Foo& f);
...
private:
set<pair<int,int>> points;
...
}

如果两个 Foo 对象具有相等的点集,则重载的相等运算符返回 true。如果我这样使用它,它会按预期工作:

Foo a = Foo();
Foo b = Foo();
if (a == b) ...

我的问题是,为什么下面的编译失败?

vector<Foo> foos = ...
Foo c = ...
if (any_of(foos.begin(),foos.end(),[c](const Foo& f) { return (f == c); }))
{
// stuff
}

最佳答案

在您的 lambda 中,fconst。所以你不能在上面调用你的operator==,因为你的operator==不是const。所以解决这个问题:

bool operator==(const Foo& f) const;

关于c++ - 将 std::any_of 与 lambda 一起调用重载相等运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256303/

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