2013-11-24 204 views
0

使用ASCII而不是信我有一個枚舉:C++的枚舉

enum Items { 
    PAC = 'C', GHOST = '@', FRUIT = 'o', POINTS = '.', WALL = 'w', EMPTY = ' ', UNDEFINED = '+' 
} fieldItems; 

,我想下進行更改與ASCII表的178。我知道我如何分配它:char w = 178; 但是,我怎麼說這是一個字符的枚舉w?

+0

這不是ascii。來自代碼頁437的硬編碼字符代碼並不完全移植該井。 –

回答

2

爲什麼不乾脆:

WALL = 178 

如果你想控制的基礎類型的enum,你應該使用

enum Items : char { ... }; 

反正。請注意,只有枚舉類型Items具有單個基礎類型,而不是每個值。你不能告訴編譯器WALL是一個特定的類型。

+0

這給了我一個奇怪的錯誤:警告:範圍枚舉僅適用於-std = C++ 11或-std = gnu ++ 11 [默認情況下啓用] – AnnoyedGuy

+0

@AnnoyedGuy這並不奇怪,這是真的:你需要C + +11以上述方式來控制枚舉的類型。如果你不能使用C++ 11,只需使用'WALL = 178',因爲如果你使用其他方式,比如''\ xB2''或'char(178)',它就不會有什麼實質性的變化 - 結果將是一樣的。 –

2

沒有一個小數轉義字符文字,但有一個十六進制轉義:

WALL='\xB2'