Edited at

enumからSceneを配列を利用して変換する

More than 5 years have passed since last update.

// プレイするゲームのステージ

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)はこちら