我正在尝试在课堂上使用此问题中提供的解决方案。我在类中使用了带有谓词函数的“remove_if”。
void classname::function1()
{
vector<NeighborPoint> neighbors;
....
neighbors.erase(std::remove_if(neighbors.begin(),neighbors.end(),&classname::cannotMoveIn), neighbors.end());
...
}
bool classname::cannotMoveIn(NeighborPoint mp)
{
return !mp.inGridNotOccupied;
}
如果该代码不在类中并且谓词不是成员函数,则该代码将起作用。但是,现在我收到很长的错误消息,我猜这些错误消息是指 remove_if 模板与谓词参数不兼容(一个错误包括:错误 C2064:术语不计算为采用 1 个参数的函数)。
注意:代码旨在删除代理无法进入的相邻网格单元(在 8 个可能的单元中)。
有谁知道出了什么问题?