我实现了此功能,但仍然出现以下错误,我无法弄清原因。
/usr/include/c++/4.8/bits/stl_algo.h:6325: error: no match for call to '(Farm::killHeaviestAnimalOnFarm()::__lambda0) (Animal*&, Animal*&)' if (__comp(*__result, *__first)) ^
Run Code Online (Sandbox Code Playgroud)
我在互联网上搜索了一些示例,但看不到我和我之间有什么区别。
我的.cpp文件具有以下killHeaviestAnimalOnFarm
Animal *Farm::killHeaviestAnimalOnFarm()
{
auto minmax_widths = std::max_element(animals.begin(), animals.end(),
[] (Animal const& lhs, Animal const& rhs) {
return lhs.getWeight() < rhs.getWeight();
});
}
Run Code Online (Sandbox Code Playgroud)
如果animals
是,vector<Animal*>
则将您的lambda函数更改为:
auto minmax_widths = std::max_element(animals.begin(), animals.end(),
[] (Animal const * lhs, Animal const * rhs) {
return lhs->getWeight() < rhs->getWeight();
});
Run Code Online (Sandbox Code Playgroud)
另一种方法是让animals
一个vector<Animal>
在这种情况下,你的拉姆达的工作不变。