【发布时间】:2013-08-29 11:30:49
【问题描述】:
我有一个带有方法的类,我也希望能够将其用作谓词。
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); }
};
};
但是,编译器抱怨在没有 MyClass 实例的情况下无法使用 ParticleHasAncestor()。我需要使用朋友课程吗?或者有更好的解决方案吗?
我没有使用 C++11,所以不能使用 lambda 函数。
更新: ParticleHasAncestor() 不能设为静态,因为它使用 MyClass 的成员。
【问题讨论】: