STL中list容器的remove_if 参数问题
class A{
public:
bool func1(int a){
return a>1;
}
};
bool func2(int a){
return a < 0;
}
typedef bool(A::*cpb)(int);
int main(){
list<int> c1(3);
c1.push_back(4);
c1.push_back(5);
c1.remove_if(func2); //可以
c1.remove_if(&A::func1); //出错 error C2064: 项不会计算为接受 1 个参数的函数
A a;
cpb funP = &A::func1;
c1.remove_if(&A::func1); //出错 指向绑定函数的指针只能用于调用函数
}
class A{
public:
bool operator()(int a)
{
return a>1;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
list<int> c1(3);
c1.push_back(4);
c1.push_back(5);
c1.remove_if(A());
return 0;
}
class A
{
bool fun1(int a)
{
return a > 2;
}
};
class B
{
public:
bool operator ()(int a)
{
return a > 2;
}
};
bool fun2(int a)
{
return a > 2;
}
int main()
{
list<int> l(3);
l.push_back(1);
l.push_back(2);
l.push_back(3);
l.remove_if(fun2);
B b;
l.remove_if(b);
getchar();
}