0

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 番目の方法を使用できますか、それとも間違った方法ですか?

4

2 に答える 2

0

あなたはこのようにするかもしれません

enum Value ={ace=1, two,...};
Value a_value = static_cast<Value>(some int value, in enum range);
于 2013-09-29T14:26:21.850 に答える