Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Bmg113
201 / 147 / 5
Регистрация: 14.03.2013
Сообщений: 784
22.11.2014, 22:28     Узнать элемент enum по значению #1
Вот дан какой нибудь enum как определить ключ (имя переменной) по значению?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2014, 22:28     Узнать элемент enum по значению
Посмотрите здесь:

C++ Дана матрица вещественных чисел. Найти максимальный элемент и наиболее удалённый от него (по значению) элемент матрицы.
C++ Структура: Разработать программу, которая по заданному значению параметра St находит соответствующий элемент массива
Удалить из последовательности первый по порядку элемент, наиболее близкий по значению к среднему арифметическому C++
Не вызывается нужный элемент массива по значению управляющей переменной в цикле for C++
Удалить первый совпадающий по значению элемент из std::vector C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,236
22.11.2014, 22:38     Узнать элемент enum по значению #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;
}
Bmg113
201 / 147 / 5
Регистрация: 14.03.2013
Сообщений: 784
22.11.2014, 22:46  [ТС]     Узнать элемент enum по значению #3
А вот теперь представьте, что таких элементов 100? =))
Nelkor
20 / 20 / 4
Регистрация: 05.12.2013
Сообщений: 215
22.11.2014, 22:55     Узнать элемент enum по значению #4
Тогда, может быть, имеет смысл вместо перечисления массив сделать?
Bmg113
201 / 147 / 5
Регистрация: 14.03.2013
Сообщений: 784
22.11.2014, 23:36  [ТС]     Узнать элемент enum по значению #5
А по подробнее?
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2899 / 1435 / 395
Регистрация: 18.10.2014
Сообщений: 2,643
22.11.2014, 23:48     Узнать элемент enum по значению #6
Цитата Сообщение от Bmg113 Посмотреть сообщение
Вот дан какой нибудь enum как определить ключ (имя переменной) по значению?
Во-первых, задача бессмысленна с точки зрения языков С и С++. "Имена" элементов enum являются просто иденификаторами в исходном тексте программы. Они существуют только в исходном тексте програмы. В скомпилированном коде не существует никаких имен.

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

Если вам нужно вдруг зачем-то восстнавлоивать имена констант enum в том виде, в котром они были указаны в исходном тексте программы, то вам самостоятельно вручную придется организовать отображение значений на соответствующие строки. Но на самом деле сначало надо было бы выяснить, зачем вам такое могло понадобиться. Обычно это никому ни на фиг не нужно. А возникновение такой "необходимости" скорее свидетельствует о како-то заблуждении со стороны вопрошающего.
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,938
23.11.2014, 00:10     Узнать элемент enum по значению #7
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
А возникновение такой "необходимости" скорее свидетельствует о каком-то заблуждении со стороны вопрошающего.
Позвольте не полностью с вами согласиться, хотя все, что вы написали, совершенно верно. У меня пару раз возникали ситуации, когда объект (родной или унаследованный) вел себя чуток не так, как я хотел. А у объекта енумные флаги, какие-то устанавливаются по умолчанию, какие-то я меняю по ходу дела. И мне хотелось бы увидеть значение флага в данной точке программы. И получаю в qDebug, например, какое-то число, которое надо расщепить на биты, лезть в хедеры, разбирать их смысл...
Было бы значительно приятнее, если бы эти флаги мне выдавались в мнемонически понятном виде. Понимаю, что это из области фантастики (вы прекрасно написали - почему), но желание-то вполне объяснимо...
Bmg113
201 / 147 / 5
Регистрация: 14.03.2013
Сообщений: 784
23.11.2014, 00:10  [ТС]     Узнать элемент enum по значению #8
Приму к сведению =)

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

Добавлено через 1 минуту
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Технический приём для формирования согласованных данных
Пока не осилил. Попробую завтра. Спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2014, 00:16     Узнать элемент enum по значению
Еще ссылки по теме:

Сформировать массив С, каждый элемент которого равен максимальному значению соответствующих элементов массивов А и В C++
C++ Каждый отрицательный элемент одномерного массива заменить противоположным по значению элементом
Очередь. Поставить перед каждым отрицательным элемент противоположный ему по значению C++

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

Или воспользуйтесь поиском по форуму:
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,938
23.11.2014, 00:16     Узнать элемент enum по значению #11
Цитата Сообщение от Bmg113 Посмотреть сообщение
Вот! Вот та же самая причина!
Это приятно, коллега
А уж если вы ковыряетесь в QAxObject, так там 2 черта сломят все 4 ноги!
Yandex
Объявления
23.11.2014, 00:16     Узнать элемент enum по значению
Ответ Создать тему
Опции темы

Текущее время: 13:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru