発生コード
enum class GameStates {
WAIT_START_STATE,
TRACER_STATE,
};
int nowState = static_cast<int>(GameStates::WAIT_START_STATE); // error
発生した原因
gccコンパイルのオプションに-std=c++03
を指定していたため
解決策
- gccコンパイルのオプションで
-std=c++11
か-std=gnu++11
の指定に変更する - gccのオプションで最小限の驚きには反するがenumで暗黙的にint型にする
enum GameStates {
WAIT_START_STATE,
TRACER_STATE,
};
int nowState = WAIT_START_STATE;
今回は開発環境の都合上2.の解決方法を選択した.
参考文献
(1) How to automatically convert strongly typed enum into int?
(2) enum class is not a class or namespace