【发布时间】:2013-05-07 06:44:54
【问题描述】:
我想将std::remove_if 与作为不同类的成员函数的谓词一起使用。
那是
class B;
class A {
bool invalidB( const B& b ) const; // use members of class A to verify that B is invalid
void someMethod() ;
};
现在,实现A::someMethod,我有
void A::someMethod() {
std::vector< B > vectorB;
// filling it with elements
// I want to remove_if from vectorB based on predicate A::invalidB
std::remove_if( vectorB.begin(), vectorB.end(), invalidB )
}
有没有办法做到这一点?
我已经研究了解决方案
Idiomatic C++ for remove_if,但它处理的情况略有不同,即 remove_if 的一元谓词是 B 而不是 A 的成员。
此外,
我无权访问 BOOST 或 c++11
谢谢!
【问题讨论】:
-
您的编译器是否实现了 TR1?如果是这样,您仍然可以使用
std::tr1::bind,这正是您需要的。 -
为什么它不是
static成员函数(或根本不是成员函数)?也就是说,您是否应该使用特定的A对象来调用invalidB? -
你能把
InvalidD设为静态吗? -
@sftrabbit 我需要来自
A特定实例的信息,以确定B是否有效。它不能是静态的。 -
哦,我才发现
someMethod是A的成员。
标签: c++ methods stdvector predicate remove-if