我正在尝试在它们被销毁时擦除敌人的健康值,并且我收到错误“没有重载函数的实例”......“如果我有以下内容,则匹配参数列表:
upgradeHealth.erase(inner)
似乎只接受这样的事情:
upgradeHealth.erase(upgradeHealth.begin())
我需要擦除内部位置的元素,以便它与刚刚被摧毁的敌人相匹配。这是for循环:
for (outer = 0; outer < bullets.size(); outer++)
{
for (inner = 0; inner < upgrades.size(); inner++)
{
if (upgrades[inner]->HitTest(bullets[outer]))
{
upgradeHealth[inner] -= 1;
bullets.erase(outer--);
multiplier += 0.01;
hasHit = true;
multiplierTime = 0;
cout << upgradeHealth[inner] << endl;
if (upgradeHealth[inner] == 0)
upgradeHealth.erase(inner), upgrades.erase(inner), score += 100 * multiplier;
break;
}
}
}
答案 0 :(得分:1)
类erase
std::vector
iterator erase(iterator position);
iterator erase(iterator first, iterator last);
答案 1 :(得分:0)
您只能使用erase(...)
的{{1}}方法删除迭代器。
您可以检查this answer如何从索引获取迭代器。虽然我建议你重新考虑你的算法,这样你就不需要这样的转换。