次のコードは、ボールがレンガと重なっているかどうかをチェックします。オーバーラップが発生すると、ブリックが強調表示され、リストから削除されます。
vector brickWallの最後のアイテムのみを消去すると、コア ダンプが発生します。erase()行にコメントすると、コードはうまく機能するようです。
フォーラムで同様の問題を調べた後、ベクトル内のアイテムを適切に反復して消去していると信じていましたが、そうではないのではないかと思います.
このコードに関する提案は大歓迎です!
void Game::updateEntities()
{
ballMother.update();
for (std::vector<gdf::Entity>::iterator it = brickWall.begin(); it != brickWall.end(); ++it)
{
if (it->getRect().intersects(ballMother.getRect())) {
it->rect.setFillColor(sf::Color::Red);
it = brickWall.erase(it);
}
else {
it->rect.setFillColor(it->colour);
}
}
}