在类中定义谓词

Dav*_*all 3 c++ stl predicate

我有一个类的方法,我也希望能够用作谓词.

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的成员.

cpp*_*cpp 5

使此谓词成为静态方法.但它不可能const那样.