私は find_if 関数がどのように機能するかを理解しようとしており、このリファレンスの例に従っています:
http://www.cplusplus.com/reference/algorithm/find_if/
上記の参考文献に示されている例に従うと、つまり main() を使用すると、すべて正常に動作します。しかし、その例をクラス内に含めようとすると (以下に示すように)、コンパイル時に次のエラーが発生します。
error: argument of type ‘bool (A::)(int)’ does not match ‘bool (A::*)(int)’
私のクラス内:
bool A::IsOdd (int i) {
return ((i%2)==1);
}
void A::function(){
std::vector<int> myvector;
myvector.push_back(10);
myvector.push_back(25);
myvector.push_back(40);
myvector.push_back(55);
std::vector<int>::iterator it = std::find_if (myvector.begin(), myvector.end(), IsOdd);
std::cout << "The first odd value is " << *it << '\n';
}
なぜこれが起こっているのかを理解するのを手伝ってくれる人はいますか?