| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Два enum с одинаковыми значениями |
| Автор: RastaDja 19.7.2013, 11:17 | ||
| Доброго времени суток! Подскажите, как определить два перечисления с одинаковой константой в одном файле
Получаю ошибку error C2371: 'NONE' : redefinition; different basic types Спасибо |
| Автор: ChipNDale 19.7.2013, 11:56 |
| 1. Использовать namespace. 2. Использовать enum class. 3. Использовать разные имена. |
| Автор: Dem_max 19.7.2013, 19:57 |
| 1. Использовать namespace. |
| Автор: borisbn 20.7.2013, 07:59 | ||
| Сорри за небольшой Но я накушался с этими enum class'ами.. По любому чиху их нужно явно приводить к int'у...
То же самое при сеарилизации... Код становится только хуже читаемым. Так что я тоже за namespace |
| Автор: volatile 20.7.2013, 11:11 |
| любителям Ады это должно понравицца... |
| Автор: dershokus 23.7.2013, 11:00 | ||||
Вот так можно
или так |
| Автор: boostcoder 23.7.2013, 15:54 | ||
ну...оно вроде как для этого и придумывалось, чтоб победить неявное преобразование. просто, нужно "правильную" сериализацию использовать ;)
|
| Автор: borisbn 23.7.2013, 16:13 | ||
Это-то да. И иногда это спасает, но иногда бесит. Лучше уж я буду пользоваться простыми enum'ами и включу параноидальный уровень warning'ов. Не в моём случае - протокол передачи сообщений мне выдали снаружи (я должен был подключиться к другой системе)... Но вообще-то, спасибо за https://github.com/niXman/yas. Интересно, а как ты сериализацию для enum class'ов сделал ? |
| Автор: boostcoder 23.7.2013, 18:56 |
все просто. underlying_type тип либо указывается вручную(для enum class), либо выводится компилятором в зависимости от максимального значения перечеслителя. поэтому, при бинарной сериализации, нужно хранить пару: left:'size of enum', right:'raw data' собственно https://github.com/niXman/yas/blob/master/include/yas/serializers/binary/utility/pod_serializers.hpp#L47, и https://github.com/niXman/yas/blob/master/include/yas/serializers/binary/utility/pod_serializers.hpp#L64. |
| Автор: RastaDja 30.7.2013, 16:40 | ||||
Использовал именно этот вариант. Спассибо за советы всем кто отписался. |
| Автор: Alca 30.7.2013, 16:49 | ||
|