redefinition_enum_red

【c++】enum struct(class)とは

LINEで送る
Pocket

c++でenumを宣言する際に以下の様な宣言を見たことはないですか?



※structはclassにもなり得る

このstructとかclassって何なんだろう?と言う疑問があり調べてみました。

struct(class)の二つの意味


結論、二つの意味がありそうでした。

・異なるenum値で同じ列挙子を用いる事を可能にする
・int値との違いを明確なものにする


少し解説


※参考
プログラミング言語C++第4版
以下の様なコードはコンパイルは通るでしょうか?


まぁ、流れ的に分かりそうですがこれは通りません。

redefinition_enum_red


では、どうすれば通るのでしょうか?

同名の列挙子を用いる事を可能にする


以下の様に変更すると通ります。(c++11以降)


structを追加しました。
※classでも通ります。
※両方にstructを追加していますが片方だけ追加するだけで通ります。

structを追加したことにより、各列挙子のスコープが明確なものになり、ビルドが通るようになりました。

intとの相互変換


structを加えなければ実はそのまま代入が出来ます。

の具合ですね。

structがある場合は以下の形で相互に変換出来ます。

・int => enum値

・enum値 => int


誰かのお役に立てば。

このブログのcocos記事一覧

LINEで送る
Pocket

Dalt

translimit, Inc. Application Engineer. Twitter: @daiki1003 Facebok: Daiki Asahi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です