C++ で typedef + 定数を使用する場合と enum リストを使用する場合の違いについて疑問に思っています。違いが私にとって重要であるように思われる理由は、私が使用する列挙型が途中で連続性を壊し、「醜い」ことを強制するからです
カードの値とスーツの新しいタイプを定義する必要がある両方の方法を持つカードのデッキの例:
enum Value{
ace = 1,
//Biggest issue is I dont want to have two = 2 etc. until 10
jester = 11,
queen = 12,
king = 13
};
この例の問題は、新しい値を数値にしたい場合、たとえば 7 はできないということです。
Value a_value = 7; //Won't allow int to Value
Value a_value = seven; //This extra enum seems just bad
別のオプションは、次のことです。
typedef char Value
#define ace 1
#define jester 11
#define queen 12
#define king 13
これは本質的に同じ結果ですが、この方法では次のことができます。
Value a_value = 7;
#define で 2 番目の方法を使用できますか、それとも間違った方法ですか?