【发布时间】:2015-02-02 12:26:25
【问题描述】:
我试图在敌人被摧毁时抹去他们的健康值,如果我有以下情况,我会收到错误“没有重载函数的实例”...”与参数列表匹配:
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;
}
}
}
【问题讨论】:
-
改用“upgradeHealth.begin() + inner”
-
我曾考虑过这样做,但掩盖了它,但它确实有效,所以谢谢!