我有這樣的預定義的功能時謂詞錯誤。的remove_if:使一個函數返回布爾
void attack(std::vector<GameObject*> objects, unsigned damage) {
for (GameObject* object : objects) {
object->takeDamage(damage);
auto isDead = object->isDead();
objects.erase(std::remove_if(objects.begin(),objects.end(),isDead), objects.end());
}
}
這是我isDead功能
bool isDead() const {
if (destructed) {
std::cout << "memory error" << std::endl;
}
return life <= 0;
}
這是我不斷收到錯誤。已經嘗試了很多東西,但根本無法弄清楚這一點。任何幫助感謝!
錯誤:表達式不能用作函數 {return bool(_M_pred(* __ it)); }
請編輯您的問題包含類似一般的功能[MCVE] – Slava
您不能使用方法,你需要使用'的std :: bind' – Slava
哪條線是發生在該錯誤? – Barmar