我有一個類,並且我還希望能夠用作謂詞。在類中定義謂詞
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,所以不能使用lambda函數。
更新: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)'而不用拖尾'()' –