提示コードの/////コメント部の内部のコードですが例外が出てしまいその修正方法がわかりませんgoogle翻訳で
[ ベクトルイテレータを終了を超えてインクリメントできません ]という例外が発生するのですがこれはどうやって解決すればいいのでしょうか?コメント部内部のコードで最後の次が挿入されているのは明確なのですがその修正方法がわかりません。
cpp
1 2//バレットとの当たり判定 3void Stage::ColPlayer_Bullet(std::shared_ptr<std::vector<Bullet>> bullet) 4{ 5 for (std::vector<MapChip>::iterator itr = mStage.begin(); itr != mStage.end(); itr++) 6 { 7 MapChip chip = *itr; //マップチップ 8 for (std::vector<Bullet>::iterator b = bullet->begin(); b != bullet->end();) 9 { 10 if (Box_Collision::Intersect(chip.mCol, b->mCol) == true) 11 { 12 13 switch (chip.mCol.getObjectType()) 14 { 15 //レンガとの当たり判定 16 case StageObjectType::Brick: 17 { 18 chip.HP += -1; //耐久値を減らす 19 if (chip.HP < 0) 20 { 21 /////////////////////// 22 itr = mStage.erase(itr); //ヒットしたブロックを消す 23 ////////////////////// 24 } 25 26 b->mIsHit = true; //ヒットエフェクトを再生 27 b->FixPos(chip.mCol.getPosition()); //バレットの座標を修正 28 } 29 break; 30 31 32 //ブロックとの当たり判定 33 case StageObjectType::Block: 34 { 35 b->mIsHit = true; //ヒットエフェクトを再生 36 b->FixPos(chip.mCol.getPosition()); //バレットの座標を修正 37 } 38 break; 39 40 41 } 42 } 43 44 //ヒットエフェクトが再生されたy要素を削除 45 if (b->isDelete == true) 46 { 47 ////////////////////// 48 b = bullet->erase(b); 49 ///////////////////// 50 //printf("バレット削除\n"); 51 } 52 else { 53 b++; 54 } 55 } 56 57 } 58} 59
回答1件
あなたの回答
tips
プレビュー