2013-11-24 169 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'