![]() |
|
Модераторы: bsa |
![]()
|
|
| and277 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Привет ребята. Подскажите почему нельзя инициализировать перечисл. переменную с помощью потока ввода.
Вообщем я хочу инициал-ть переменную вводя её значение с клавы. Например, вот так:
Знаю, что новые компиляторы не допускают инициализировать перечисл. переменную целым числом напрямую: e1 = 2. Но в данном случае я буду вводить в строчном виде, например - odin. В чем проблема собственно -ведь перечисления является стандартным типом данных ? Это сообщение отредактировал(а) and277 - 12.7.2009, 09:28 |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
вот пример работы с перечислениями:
Это сообщение отредактировал(а) zim22 - 12.7.2009, 10:07 |
||||
|
|||||
| and277 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
zim22, благодарю.
Честно, не думал что придется юзать STL для этого. Свиду перечисления такие мягкие и пушистые... |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
ИМХО не нужно никаких STL'ей тут. -------------------- ![]() |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
А в строчном виде никакие перечисления и не помогут, только ассоциации. Но это уже, из другой оперы.
Добавлено через 2 минуты и 15 секунд
enum целочисленный, поэтому о перичислении можно говорить только как о индексе. ИМХО проще ввести число, чем проверять строки. -------------------- ![]() |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Cheloveck, что вы здесь пытались сделать? допустимый диапазон значений перечисления определяется по-другому. в данном случае он будет [0; 7] *** а если у нас перечисление не последовательное? что будете делать?
имхо, значения перечисления - это детали реализации, а не интерфейса. и напрямую их вводить - не правильно. Это сообщение отредактировал(а) zim22 - 12.7.2009, 15:36 |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
Кажется у меня в примере нет никаких "если". Я не панацею показал, а пример. -------------------- ![]() |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
позвольте узнать почему Добавлено через 3 минуты и 31 секунду А ... Вы о том, какие значения могут в него уложиться ?! Но это несколько не тот диапозон, который проверял Cheloveck Добавлено через 6 минут и 30 секунд P.S. кстати для 0-3 достаточно двух битов .. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
плохой пример. он работает правильно только когда луна находится в фазе сатурна и на тип перечисления наложены ограничения. угу, Страуструпа начитался |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
Пример ввода данных с клавиатуры. Он работает в данном случае. Если луна выйдет из фазы сатурна, то у программиста есть руки и возможность сделать проверку для каждого конкретного случая. Если речь идёт о размерности типа, то тут проверки так же можно сделать динамически или статически. Не понимаю в чём могут быть проблемы восприятия этого примера. Показано, что нужно прочитать в переменную, проверить, принадлежит ли значение списку перечисления и присвоить переменной этого типа. Где что не правильно? Способы могут быть любые, в зависимости от нужды. В моём случае типа int хватит даже для DOS'а, когда он был 2-хбайтным ( да, собственно мне и байта достаточно ). Поэтому никаких проверок нет. ИМХО претензии высосаны из пальца. Это константы, на консанты всегда наложены ограничения. При том ограничения накладывает программист!!! Или я должен писать листинги на 500 строк, чтобы продемонстрировать обработку всех возможных ситуаций? Может сохранять значение на диск, ведь питание может отрубиться? Это сообщение отредактировал(а) Cheloveck - 12.7.2009, 16:46 -------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |