![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
всем привет.
enum class из с++11 конечно, замечательная вещь. но я уперся в способ сериализации/десериализации оных. скажите, стандарт предусматривает что-то вроде enum_cast<>() ? или же, как быть? спасибо. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, Вы правы.
я затупил с тем, что сразу попробовал reinterpret_cast применить, но компилятор не дал. и я на автомате подумал что static_cast тем более не позволит. и ошибся.
http://liveworkspace.org/code/2f71fc4a2648...ce300f710498701 спасибо. вопрос закрт. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, а не подскажите-ли по такому делу ;)
есть у меня специализации, к примеру, для следующих типов: char, uchar, int, uint и есть enum class`ы такие: enum class e1: char {}; enum class e2: uchar {}; enum class e3: int {}; enum class e4: uint {}; каким образом можно заставить специализацию для char принимать e1, а специализацию для uchar принимать e2, и т.д.. ? Это сообщение отредактировал(а) boostcoder - 1.12.2011, 01:21 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
boostcoder, static_cast<char>(e1::var1), это ты хотел?
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
bsa, ну и чтож мне, каждый раз при использовании enum class писать статик каст? а когда я не знаю что за тип(в шаблоне к примеру), кто статик каст вписывать будет?
вопрос -
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
boostcoder, сделай еще специализации для enum class xx... Ты какие-то странные пытаешься вещи делать с перечислением, которое специально было максимально ограничено в правах на конвертацию... Мне лично непонятно, зачем вообще этот тип сериализовать. На мой взгляд, основное применение должно быть исключительно внутри программы без выхода наружу (в raw виде, конечно).
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
что, для каждого задекларенного мною енума? оО |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
да! Тебя же не возмущает необходимость писать функцию сериализации для каждого своего класса. Так же и с этими инумами. Они специально созданы для того, чтобы они не конвертировались автоматически. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
в общем, получилось.
сделал специализацию для is_enum и is_not_convertible. ибо для обычного енума истинными являются is_enum и is_convertible. и никаких руковписываний кастов. всем спасибо. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |