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

0

У меня есть перечисление:

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

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

  • 0
    Это не так. Жесткое кодирование кодов символов из кодовой страницы 437 не совсем хорошо переносится.
Теги:
enums

2 ответа

2
Лучший ответ

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

WALL = 178

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

enum Items : char { ... };

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

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

Существует не decimal-escape для символьных литералов, но есть hex escape:

WALL='\xB2'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню