Cinder の Box2D テンプレートのコードを調べています。コードを変更して、画面からボックスを削除したり、ボックスを追加したりしたいと考えています。私はC ++を初めて使用しますが、他のSOの投稿から学んだことに基づいて、このifケースを使用してベクトルからボックスを削除しようとしています:
for( vector<b2Body*>::iterator boxIt = mBoxes.begin(); boxIt != mBoxes.end(); ++boxIt ) {
if( (*boxIt)->GetPosition().x > scaledX){
boxIt = mBoxes.erase(boxIt);
}
else {
Vec2f pos( (*boxIt)->GetPosition().x, (*boxIt)->GetPosition().y );
float t = toDegrees( (*boxIt)->GetAngle() );
glPushMatrix();
gl::translate( pos );
gl::rotate( t );
Rectf rect( -BOX_SIZE, -BOX_SIZE, BOX_SIZE, BOX_SIZE );
gl::drawSolidRect( rect );
glPopMatrix();
}
}
しかし、これにより、"(*boxIt)->GetPosition().x" を 2 回目に実行すると、不正アクセス クラッシュが発生します。何か案は?