202 / 148 / 5
Регистрация: 14.03.2013
Сообщений: 784
1

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

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

Вот дан какой нибудь enum как определить ключ (имя переменной) по значению?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2014, 22:28
Ответы с готовыми решениями:

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

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

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

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

10
2548 / 1207 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
22.11.2014, 22:38 2
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
202 / 148 / 5
Регистрация: 14.03.2013
Сообщений: 784
22.11.2014, 22:46  [ТС] 3
А вот теперь представьте, что таких элементов 100? =))
0
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
22.11.2014, 22:55 4
Тогда, может быть, имеет смысл вместо перечисления массив сделать?
0
202 / 148 / 5
Регистрация: 14.03.2013
Сообщений: 784
22.11.2014, 23:36  [ТС] 5
А по подробнее?
0
С чаем беда...
Эксперт CЭксперт С++
10014 / 5360 / 1467
Регистрация: 18.10.2014
Сообщений: 12,926
22.11.2014, 23:48 6
Цитата Сообщение от Bmg113 Посмотреть сообщение
Вот дан какой нибудь enum как определить ключ (имя переменной) по значению?
Во-первых, задача бессмысленна с точки зрения языков С и С++. "Имена" элементов enum являются просто иденификаторами в исходном тексте программы. Они существуют только в исходном тексте програмы. В скомпилированном коде не существует никаких имен.

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

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

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

Добавлено через 1 минуту
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Технический приём для формирования согласованных данных
Пока не осилил. Попробую завтра. Спасибо.
0
Диссидент
Эксперт C
26856 / 16758 / 3675
Регистрация: 24.12.2010
Сообщений: 37,521
23.11.2014, 00:16 11
Цитата Сообщение от Bmg113 Посмотреть сообщение
Вот! Вот та же самая причина!
Это приятно, коллега
А уж если вы ковыряетесь в QAxObject, так там 2 черта сломят все 4 ноги!
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2014, 00:16
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru