ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

enum class

以前書いたソースコードリファクタリングしていて、せっかくなので、よりC++らしくしようとしている。
そこで、以前は enum で書いていたところを enum class を使うようにした。
しかし、配列の添字として使おうとするとそのままでは使えないので、キャストをする必要がある。なので、次のような感じ。

int value = color[static_cast<std::size_t>(Color::kRed)];

しかし、毎回キャストを書くのも面倒。
C++23 以降なら、std::to_underlying() というのが使えるらしい。

int value = color[std::to_underlying(Color::kRed)];

とはいえ、やっぱりちょっと面倒に感じてしまう。