![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
В заголовочном файле описаны коды операций в виде enum:
codeCount используется для получения кол-ва возможных кодов. Как указать (ну кроме как явным комментарием конечно |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
semibug, явным комментарием...
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
semibug, в с++11 добавили такую замечательную вещь, как enum class.
пример:
http://liveworkspace.org/code/73e392e9d19c...4b7efced184549a спасибо ;) |
|||
|
||||
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
boostcoder, интересно, как они планируют сериализировать значения таких enum class -ов.
В моем случае как раз приходится гнать в поток по сети команды, обозначенные через enum. Сейчас пришел к тому, чтобы представить их явно в виде static const unsigned char CodeA = 0x00;, хотя и спорно, т.к. легко можно вбить неверное значение при определении нового кода (например уже задействованное). С другой стороны отпадает необходимость приведения к unsigned char. Была громоздкая идея с "фабрикой" констант, либо с кодогенерацией по XML-описанию, но коллеги по цеху замЫкали. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
нифига не понял
|
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот еще одна :
http://liveworkspace.org/code/8476d100e441...a3e6d79e21a8ae0 немного с C++0x, чтоб было меньше писанины.. Это сообщение отредактировал(а) mes - 11.10.2011, 08:59 |
||||||
|
|||||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
boostcoder, хрень какая-то, с обычным енумом точно так же не даст передать в foo(myenum) ничего кроме описанных в myenum имен. И собственно ТС не этого хочет.
-------------------- You're face to face With man who sold the world |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если речь о enum class'e то на самом деле у него есть масса замечательных качеств, просто в примере они не были отражены.. а если о том что он все равно не решает задачи тс, то согласен Это сообщение отредактировал(а) mes - 11.10.2011, 11:39 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
добавил имя для типа комманды и возможности динамического получения объекта команды как по имени так и по коду..
http://liveworkspace.org/code/6ba6692806dd...41114cfef62b599 Это сообщение отредактировал(а) mes - 11.10.2011, 12:19 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
используем аргументы любого типа при вызове и автоматическую конвертацию :
http://liveworkspace.org/code/34e1c13ef170...97d6a84cf297e5f Добавлено @ 16:02 хм.. где то я уже такое на этом форуме писалл .. Это сообщение отредактировал(а) mes - 12.10.2011, 02:33 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
добавлена автоматическая енумерация кодов.. http://liveworkspace.org/code/34e1c13ef170...97d6a84cf297e5f можно также добавить указание диапазона при определении типов комманд, для лучшего контроля.. Добавлено через 55 секунд boostcoder, а что gcc не умеет еще констуктор из конструктора вызывать ? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
нет. даже в 4.7.0 не реализовано. |
|||
|
||||
| semibug |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
Альтернатива с помощью кодогенерации по XML описанию:
+
=
|
||||||
|
|||||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
||||
|
||||
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
math64, это моя дурная привычка - оставлять запятую после последнего enum-а, чтобы дописывать было проще (так или иначе компилируется вроде).
А по хорошему тогда так:
Это сообщение отредактировал(а) semibug - 12.10.2011, 08:41 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |