我有这样的预定义的功能时谓词错误。的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