У меня есть класс с методом, который я также хотел бы использовать в качестве предиката.Определить предикат внутри класса
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.
Если я использую второй вариант, могу ли я использовать предикат в MyClass, таким образом: 'electron.erase (std :: remove_if (electron.begin(), electron.end(), std :: not1 (AncestorPredicate (higgs_id, this)())), electron.end()) ' –
@DavidHall Да, вы можете –
Примечание: У меня не должно быть дополнительных скобок в приведенном выше. Так что просто 'AncestorPredicate (higgs_id, this)' without trailing '()' –