›C++C++の列挙型でメンバ関数を実現する方法C++の列挙型はメンバ関数をサポートしていません。そこで今回は列挙型でメンバ関数を実現するための最も冴えた代替策を紹介したいと思います。false列挙型メンバ関数の実現で最も重要なレトリックは1と2です。3は実際のメンバ関数実装例です。構造体の中で列挙型を宣言しています。CATは構造体Animalsの名前空間に属することになるため、他の名前空間に影響することもありません。宣言と同時にtypeという名前で構造体のメンバ変数として宣言している点も重要です。これによりAnimalsは列挙体AnimalTypeの状態を保持し、メンバ関数からアクセスすることが出来るようになります。2の解説もっとも重要なレトリックです。これにより列挙体から構造体への自動変換が実現されます。暗黙のコンストラクタ呼び出しという仕組みを活用しています。dog(Animals::Dog);といった宣言が実現されます。実際にメンバー関数を実装している例です。1のレトリックのおかげでメンバ変数typeと列挙値Catの両者にアクセスすることが出来ます。今回は列挙型の名前をAnimalTypeとしていましたが、実際にはTypeやTypes等の簡潔なものに置き換えたほうが良いでしょう。以下は今回紹介したサンプルコードのより実践的なコードです。Animals::Dog)。