// プレイするゲームのステージ
enum struct GameStage{
STAGE1,
STAGE2,
STAGE3,
STAGE4,
STAGE5,
STAGE6
}
以下やってしまってはダメなコードです
Scene* getSceneWithGameStage(GameStage s){
if(s == STAGE1){
return Stage1::createScene();
} else if (s == STAGE2){
return Stage2::createScene();
}
.......( 略 )........
}
効率的にSceneを返すには、createメソッドを含んだ配列から引っ張ればいいです。
Scene* getSceneWithGameStage(GameStage s){
static Scene *(*createScene[])() = {
Stage1::createScene,
Stage2::createScene,
Stage3::createScene,
Stage4::createScene,
Stage5::createScene,
Stage6::createScene,
};
return createScene[static_cast<int>(s)];
}
こうかくと効率的にSceneの取得が行えます。スマートですね。
static_cast(enum)はこちら