クラス内で列挙型を記述する正しい方法は何でしょうか? 私はコンウェイの人生ゲームのコードを C++ で書いています。だから私は、さまざまな種類のパターンに関する情報を含むパターンクラスを持っています:
class Patterns
{
public:
Patterns();
~Patterns(void);
private:
enum class PatternType
{
bloat,
block,
blinker,
toad
};
PatternType pattern_;
};
私の目標は、ここで地球規模の空間を汚染することではありません。おっとの概念を念頭に置いて、クラス内で列挙型を記述する書き込み方法です。そうでない場合は、いくつかのより良い代替案と、この方法に対する利点を提案してください。クラス内に列挙型を記述する際に留意することについての入力は大歓迎です。
編集:@Jay Miller 彼の入力に基づいて、私は彼の3つの方法をすべて試しました
enum class PatternClassOut{ point, circle, triangle };
class Patterns
{
public:
enum PatternSimple{bloat, block, blinker, toad};
enum class PatternClassIn{cat, mouse, dog};
//get set functions for all the enum variables
private:
PatternClassOut out_;
PatternSimple simple_;
PatternClassIn in_;
};
私の発見(コードを試して少しグーグルで調べた後):
- PatternSimple は、私の場合、クラス内で列挙型を記述する最も簡単な方法です。ただし、型の安全性が損なわれます。つまり、列挙値を他のデータ型と比較でき、エラーは発生しません。
- PatternClassIn はタイプ セーフを提供します。しかし、列挙値にアクセスするには、呼び出し関数にさらにコードを記述する必要があります。
- PatternClassOut は、両方の長所を提供します。型安全性を提供し、さらに呼び出し関数から列挙値にアクセスするコードは PatternSimple と同じです。