С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784

Узнать элемент enum по значению

22.11.2014, 22:28. Показов 5622. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот дан какой нибудь enum как определить ключ (имя переменной) по значению?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2014, 22:28
Ответы с готовыми решениями:

Привязка своиства ToolstripButton к значению enum
Добрый день, имеется несколько toolstripButton, и свойство класса равное значению перечисления. Хотелось бы чтобы в зависимости от значения...

Узнать количество перечислений в enum
Добрый день! Как узнать количество перечислений в ABCDEF. enum ABCDEF{ P1, P2, P3 }; //Как-то так должно быть: ...

Добавить элемент в enum
Требуется добавить элемент в enume. Уйти от перечисления никуда не могу, на нём строиться библиотека нужная. В нете куча примеров как...

10
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
22.11.2014, 22:38
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
enum class Arrows
{
UP = 72,
DOWN = 75,
LEFT = 71,
RIGHT = 79
};
 
int main()
{
Arrows a = _getch();
switch(a)
{
case Arrows::UP:
cout << "verh";
break;
case Arrows::DOWN:
cout << "vniz";
break;
case Arrows::LEFT:
cout << "left";
break;
case Arrows::RIGHT:
cout << "right";
break;
}
return 0;
}
1
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784
22.11.2014, 22:46  [ТС]
А вот теперь представьте, что таких элементов 100? =))
0
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
22.11.2014, 22:55
Тогда, может быть, имеет смысл вместо перечисления массив сделать?
0
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784
22.11.2014, 23:36  [ТС]
А по подробнее?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,202
22.11.2014, 23:48
Цитата Сообщение от Bmg113 Посмотреть сообщение
Вот дан какой нибудь enum как определить ключ (имя переменной) по значению?
Во-первых, задача бессмысленна с точки зрения языков С и С++. "Имена" элементов enum являются просто иденификаторами в исходном тексте программы. Они существуют только в исходном тексте програмы. В скомпилированном коде не существует никаких имен.

Во-первых, enum в общем случае не является однозначным отображением имен на значения. В enum сколько угодно именованных констант могут иметь одно и то же значение. К тому же физическое значние объекта типа enum не обязано совпадать ни с одной из явно объявленных именованных констант.

Если вам нужно вдруг зачем-то восстнавлоивать имена констант enum в том виде, в котром они были указаны в исходном тексте программы, то вам самостоятельно вручную придется организовать отображение значений на соответствующие строки. Но на самом деле сначало надо было бы выяснить, зачем вам такое могло понадобиться. Обычно это никому ни на фиг не нужно. А возникновение такой "необходимости" скорее свидетельствует о како-то заблуждении со стороны вопрошающего.
2
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
23.11.2014, 00:10
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
А возникновение такой "необходимости" скорее свидетельствует о каком-то заблуждении со стороны вопрошающего.
Позвольте не полностью с вами согласиться, хотя все, что вы написали, совершенно верно. У меня пару раз возникали ситуации, когда объект (родной или унаследованный) вел себя чуток не так, как я хотел. А у объекта енумные флаги, какие-то устанавливаются по умолчанию, какие-то я меняю по ходу дела. И мне хотелось бы увидеть значение флага в данной точке программы. И получаю в qDebug, например, какое-то число, которое надо расщепить на биты, лезть в хедеры, разбирать их смысл...
Было бы значительно приятнее, если бы эти флаги мне выдавались в мнемонически понятном виде. Понимаю, что это из области фантастики (вы прекрасно написали - почему), но желание-то вполне объяснимо...
1
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784
23.11.2014, 00:10  [ТС]
Приму к сведению =)

Если вкратце - я придумываю велосипед. Класс по работе с Excel через "QAxObject" оборачивая их в красивые функции.
И там есть входные данные enum. Так же я могу получить значение но оно будет int, а мне надо знать какой же все таки цвет ячейки или какое все же выравнивание.
И тут как я понимаю кроме switch мне никто не поможет.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.11.2014, 00:11
Bmg113, Технический приём для формирования согласованных данных
0
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784
23.11.2014, 00:13  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
Позвольте не полностью с вами согласиться, хотя все, что вы написали, совершенно верно. У меня пару раз возникали ситуации, когда объект (родной или унаследованный) вел себя чуток не так, как я хотел. А у объекта енумные флаги, какие-то устанавливаются по умолчанию, какие-то я меняю по ходу дела. И мне хотелось бы увидеть значение флага в данной точке программы. И получаю в qDebug, например, какое-то число, которое надо расщепить на биты, лезть в хедеры, разбирать их смысл...
Было бы значительно приятнее, если бы эти флаги мне выдавались в мнемонически понятном виде. Понимаю, что это из области фантастики (вы прекрасно написали - почему), но желание-то вполне объяснимо...
Вот! Вот та же самая причина! =)

Добавлено через 1 минуту
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Технический приём для формирования согласованных данных
Пока не осилил. Попробую завтра. Спасибо.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
23.11.2014, 00:16
Цитата Сообщение от Bmg113 Посмотреть сообщение
Вот! Вот та же самая причина!
Это приятно, коллега
А уж если вы ковыряетесь в QAxObject, так там 2 черта сломят все 4 ноги!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2014, 00:16
Помогаю со студенческими работами здесь

Как поместить элемент Enum в конструктор
Есть перечисление в классе enum Color { Red, Green, Blue }. Как мне в конструкторе данного класса впихнуть это перечисление? Т.е. при...

Инициализировать элемент вектора массивом enum
Существуют enum class RoadState { Undefined, Good }; и std::vector&lt;enum class Road::RoadState&gt; states; нужно...

Как получить элемент enum по индексу?
Здравствуйте. Подскажите, пожалуйста. Вот есть у меня enum: export enum McsSelectorType { Add, Coming, Custom,

Дана матрица вещественных чисел. Найти максимальный элемент и наиболее удалённый от него (по значению) элемент матрицы.
Дана матрица вещественных чисел. Найти максимальный элемент и наиболее удалённый от него (по значению) элемент матрицы. Поиск осуществлять...

Можно ли с помощью Random выбрать элемент перечисления Enum?
Доброе время суток, у меня возникла такая дилемма можно ли с помощью Random выбрать элемент перечислены в Enum. Пример: есть классы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru