@nikbond

Класс для перечисления с заданным типом в С++?

Если в С++ сделать
enum operation = {plus, minus, mult, div};
То перечисляемые константы буду иметь тип operation.

А если мне нужно, чтобы переменная operation была типа char, и могла принимать только значения {'+', '-', '*', '/'} ?

Есть ли в std/Qt/boost/другой библиотеке какой-либо контейнер, который позволяет делать что-то в духе:

Enumeration<char> operation = {'+', '-', '*', '/'};

Или необходимо писать велосипед самому? Может, что-то есть на эту тему из области шаблонов проектирования?

Upd:
Или, еще лучше, если перечисляемые значения могут быть разного типа. К примеру, при разборе строки с арифметическим выражением на токены, токен может быть типов Operator, Operand или Bracket. Как-то так:

Enumeration<Operator, Operand, Bracket> Token = {op, num, br};
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NeitronC
Произвольный тип перечисления доступен и без сторонних библиотек, объявление подобно определееию потомка родительского класа:
enum YourType : Type {}
Например для символьного
enum MySymbol : char { Minus = '-', plus = '+' }
MSDN https://msdn.microsoft.com/ru-ru/library/2dzy4k6e.aspx
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы