使用ASCII而不是信我有一个枚举:C++的枚举
enum Items {
PAC = 'C', GHOST = '@', FRUIT = 'o', POINTS = '.', WALL = 'w', EMPTY = ' ', UNDEFINED = '+'
} fieldItems;
,我想下进行更改与ASCII表的178。我知道我如何分配它:char w = 178; 但是,我怎么说这是一个字符的枚举w?
使用ASCII而不是信我有一个枚举:C++的枚举
enum Items {
PAC = 'C', GHOST = '@', FRUIT = 'o', POINTS = '.', WALL = 'w', EMPTY = ' ', UNDEFINED = '+'
} fieldItems;
,我想下进行更改与ASCII表的178。我知道我如何分配它:char w = 178; 但是,我怎么说这是一个字符的枚举w?
为什么不干脆:
WALL = 178
如果你想控制的基础类型的enum
,你应该使用
enum Items : char { ... };
反正。请注意,只有枚举类型Items
具有单个基础类型,而不是每个值。你不能告诉编译器WALL
是一个特定的类型。
这给了我一个奇怪的错误:警告:范围枚举仅适用于-std = C++ 11或-std = gnu ++ 11 [默认情况下启用] – AnnoyedGuy
@AnnoyedGuy这并不奇怪,这是真的:你需要C + +11以上述方式来控制枚举的类型。如果你不能使用C++ 11,只需使用'WALL = 178',因为如果你使用其他方式,比如''\ xB2''或'char(178)',它就不会有什么实质性的变化 - 结果将是一样的。 –
没有一个小数转义字符文字,但有一个十六进制转义:
WALL='\xB2'
这不是ascii。来自代码页437的硬编码字符代码并不完全移植该井。 –