Rozważmy następujący:Używanie std :: ptr_fun dla funkcji członka
class A
{
public:
bool is_odd(int i)
{
return (i % 2) != 0;
}
void fun()
{
std::vector<int> v2;
v2.push_back(4);
v2.push_back(5);
v2.push_back(6);
// fails here
v2.erase(std::remove_if(v2.begin(), v2.end(), std::not1(std::ptr_fun(is_odd))), v2.end());
}
};
Powyższy kod nie neguje efekt is_odd()
ponieważ jest to funkcja członkiem. Połączenie z std::ptr_fun()
kończy się niepowodzeniem.
Jak mogę to zrobić? Należy pamiętać, że chcę, aby is_odd()
była niestatyczną funkcją składową.
Czy funkcja "is_odd' jest statyczna? Czy funkcja nie jest członkiem? Nie ma powodu, dla którego powinna być funkcją członka. –
@HappyCoder: Wykonaj funkcję statycznego członka. –
Możesz napisać klasę funktora, która jest * jak * typ '[this] (int n) {return is_odd (n);}' yourself i użyj tego. –