0
我目前正在用cinder編寫一個空間射擊遊戲來學習C++。我正在檢查激光和敵人之間的碰撞。列表迭代器檢查對象之間的碰撞時不可增量
void ParticleController::CheckCollisions()
{
for(std::list<Enemy>::iterator e = enemys_.begin(); e != enemys_.end();)
{
for(std::list<LaserParticle>::iterator p = laserParticles_.begin(); p != laserParticles_.end();)
{
if(e->GetBoundingBox().intersects(p->GetBoundingBox()))
{
e = enemys_.erase(e);
p = laserParticles_.erase(p);
}
else
++p;
}
++e;
}
}
但我得到錯誤「list iterator not incrementable」。我之前有過這個錯誤,但這次我似乎無法修復它。
當您嘗試進一步增加比.END你可能得到這個錯誤() –
@Elliot羅賓遜對這個問題的答案犯規適用於我的情況 –
它應該是在所有的敵人的情況下準確的應用因爲你的'++ e'不是以'e!= enemys_.end()'爲條件的 –