![]() |
|
Модераторы: bsa |
![]()
|
|
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Есть пара Enum'ов:
Реально ли по значению ("индексу") вывести название переменной? Или перечислить все названия стран. И более сложный вопрос: реально ли по стране в, именно таком коде, вывести название столицы? Я, честно говоря, не очень работал с этими перечислениями, каким образом можно делать такие штуки? Я бы их в массивы, честно говоря, скинул и не мучался бы, но очень нужно именно с Enum'ами Это сообщение отредактировал(а) Proger10 - 15.9.2015, 23:23 |
|||
|
||||
| feodorv |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Это сообщение отредактировал(а) feodorv - 16.9.2015, 03:37 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||||
|
|||||||||||
| math64 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Обеспечить это можно примерно так:
|
||||
|
|||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
1) Такое не компилируется
2) Выведет только Россию и Норвегию, а США останется за бортом (хотя... может Вы так и задумывали )) Чтобы вывело всё нужно
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
У меня, кстати, такой подход:
выдаёт: "error: cannot increment expression of enum type 'Country'" (G++ 4.2.1, "Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)" ) а у вас работает? PS И кто только придумал такой гемор использовать. Делали бы через массивы и проблем бы не знали, нет же "мы лёгких путей не ищем" Это сообщение отредактировал(а) Proger10 - 16.9.2015, 12:37 |
|||
|
||||
| feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Мда. Очень хотелось Country))) Тогда либо
Добавлено через 1 минуту и 24 секунды Строгая типизация имеет свои преимущества))) -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Аа, всё, понял ход мыслей. Спасибо за наводку! PS И нафига студентам задают такую чушь. Сколько работаю в программировании - никогда не приходилось подобной ахинеей заниматься |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Если идентификаторы идут не по порядку - нужно правильно реализовывать operator++, например так:
Но опять, при добавлении страны, нужно не забыть добавить case Это сообщение отредактировал(а) math64 - 17.9.2015, 10:35 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
В enum значения могут идти не только не по порядку, но еще и повторяться.
имхо, enum для такого применения не предназначен. map напрашивается в данном случае. |
|||
|
||||
| Dov |
|
||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Здесь нужен немного другой подход, в данном случае для инкремента нужно использовать присваивание и преобразование типа. Например:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||
|
|||||
| Guinness |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
Не обязательно использовать <=. Можно enum объявить следующим образом:
Тогда цикл for у нас получится более гибким:
Но опять же, выше уже описали проблемы использования enum`а таким образом. |
||||
|
|||||
![]()
|
| Правила форума "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. |