2013-11-24 4 views
0

у меня есть перечисление:C++ Использование ASCII вместо буквы в перечислении

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

И я хочу, чтобы изменить вес с 178 таблицы ASCII. Я знаю, как я его назначаю: char w = 178; Но как я могу назвать w перечисления, что это символ?

+0

Это не ascii. Жесткокодирующие коды символов с кодовой страницы 437 точно не портятся. –

ответ

2

Почему не просто:

WALL = 178 

Если вы хотите контролировать базовый тип из enum, вы должны использовать

enum Items : char { ... }; 

в любом случае. Обратите внимание, что только тип перечисления Items имеет один базовый тип, а не каждое значение. Вы не можете сообщить компилятору, что WALL имеет определенный тип.

+0

Это дает мне странную ошибку: warning: scoped enums доступен только с -std = C++ 11 или -std = gnu ++ 11 [включен по умолчанию] – AnnoyedGuy

+0

@AnnoyedGuy Это не странно, это просто так: вам нужно C + +11, чтобы иметь вышеуказанный способ управления типом перечисления. Если вы не можете использовать C++ 11, просто используйте 'WALL = 178', так как это не будет иметь никакого реального значения, если вы используете другие способы, такие как' '\ xB2'' или' char (178) '- результат будет таким же. –

2

Существует не десятичной побег для символьных литералов, но есть шестигранный побег:

WALL='\xB2' 
Смежные вопросы