述語としても使用できるようにしたいメソッドを持つクラスがあります。
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); }
};
};
ただし、コンパイラはParticleHasAncestor()
、MyClass のインスタンスなしでは使用できないと文句を言います。フレンドクラスを使用する必要がありますか? または、これに対するより良い解決策はありますか?
私は C++11 を使用していないため、ラムダ関数を使用できません。
更新: ParticleHasAncestor()
MyClass のメンバーを使用するため、静的にすることはできません。