我有一个类的方法,我也希望能够用作谓词.
class MyClass {
bool ParticleHasAncestor(const Particle &particle, int id) const;
class AncestorPredicate {
int mId;
public:
AncestorPredicate(int idCode) : mId(idCode) { }
bool operator()(const Particle &particle) const { return ParticleHasAncestor(particle, mId); }
};
};
Run Code Online (Sandbox Code Playgroud)
但是,编译器抱怨没有ParticleHasAncestor()MyClass实例就无法使用.我需要使用朋友班吗?或者有更好的解决方案吗?
我没有使用C++ 11,所以不能使用lambda函数.
更新: ParticleHasAncestor()无法使其成为静态,因为它使用MyClass的成员.