Сильно типизированные перечисления без явного определения объема? - PullRequest
5 голосов
/ 08 августа 2011

Я хочу сильные типы enum.В C ++ 0x есть эта функция, но, к сожалению, они также требуют явного определения объема:

enum class E {e1, e2, e3};
E x = E::e1; //OK
E y = e1; //error

Иногда это желательно, но иногда это просто излишне многословно.Идентификаторы могут быть достаточно уникальными сами по себе, или перечисление уже может быть вложено в класс или пространство имен.

Так что я ищу обходной путь.Что было бы лучшим способом объявить значения перечисления также в окружающей области видимости?

1 Ответ

7 голосов
/ 08 августа 2011

Если вы хотите, чтобы значения были видны в окружающей области, просто добавьте пару констант:

enum class E {e1, e2, e3};

const E e1 = E::e1;
const E e2 = E::e2;
const E e3 = E::e3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...