以下のコードですが提示画像のように配列の範囲外を指してしまう例外出ます。これは以下のコードをどのように編集したらいいのでしょうか?
提示コード内のコメント部内部のeraseメンバ関数でエラーが起きているのですがこの場合どうすればいいのでしょうか?
cpp
1 2 //弾との当たり判定 3 for (std::vector<MapObject>::iterator it = Area.begin(); it != Area.end();) 4 { 5 std::shared_ptr<std::vector<Bullet>> bullet = play.getBullet(); 6 for (std::vector<Bullet>::iterator itr = bullet->begin(); itr != bullet->end();) 7 { 8 if (Intersect_Rect_2D(itr->mCol, it->mCol) == true) 9 { 10 ObjectType type = it->getObjectType(); 11 12 switch (type) 13 { 14/////////////////////////////////////////////////////////////////////////// 15 //レンガ 16 case ObjectType::Brick: 17 { 18 it = Area.erase(it); 19 20 if (it == Area.end()) 21 { 22 break; 23 } 24 else { 25 it++; 26 } 27 28 } 29 break; 30 31 //ブロック(白レンガ) 32 case ObjectType::Block: 33 { 34 it = Area.erase(it); 35 if (it == Area.end()) 36 { 37 break; 38 } 39 else { 40 it++; 41 } 42 } 43////////////////////////////////////////////////////////////////////////// 44 45 } 46 47 } 48 else 49 { 50 itr++; 51 } 52 } 53 54 if (it == Area.end()) 55 { 56 break; 57 } 58 else { 59 it++; 60 } 61 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。