この質問で提供された解決策をクラスで使用しようとしています。クラス内の述語関数で「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テンプレートと述語パラメーターの非互換性を示す長いエラーメッセージが表示されます(1つのエラーには次のものが含まれます:エラーC2064:termは1つの引数を取る関数に評価されません)。
注:このコードは、エージェントが移動できない隣接するグリッドセル(8つの可能なセルのうち)を削除することを目的としています。
誰かが何が悪いのか分かりますか?