Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Raali
670 / 367 / 82
Регистрация: 06.07.2013
Сообщений: 1,169
Завершенные тесты: 1
1

Как сделать красиво?

12.06.2016, 14:46. Просмотров 372. Ответов 4
Метки нет (Все метки)

Как реализовать красиво и удобно функционал string to enum ( чтобы по стрингу брать элемент из енума) , с возможностью добавлять новые элементы к enum только в одном месте?
есть у меня такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A
{
public:
   enum class TYPE
   {
     enum1,
     enum2,
     enum3,
     enum4,
   };
 
   static std::map<std::string, TYPE> ENUMMAP;
}
 
//можно сделать вот так(но тогда придется при добавлении нового элемента менять в 2х местах
//- в хедере и тут соответственно)
std::map<std::string, A::TYPE> A::ENUMMAP =
{
{"enum1" ,A::TYPE::enum1},
{"enum2" ,A::TYPE::enum2},
{"enum3" ,A::TYPE::enum3},
{"enum4" ,A::TYPE::enum4},
};
а как еще по-удобнее можно реализовать такой функционал?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2016, 14:46
Ответы с готовыми решениями:

Как программисты так красиво форматируют комментарии?
Открываю любой исходник более-менее крупного проекта и сразу же любуюсь всякими красивыми рамочками...

Как красиво игнорировать символы из входного потока?
Здравствуйте! Необходимо игнорировать некие символы до конца строки. Есть два варианта:...

Красиво и читабельно оформить код
#include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); ...

GET параметры... как сделать красиво?
Я на сайте сделал так: site.ru/index.php?page=shop&amp;par1=1&amp;par2=2&amp;par3=3 кол-во параметров может...

Как сделать более красиво?)
дана программа которая создает матрицу 2х2 и передвигает каждое значение по часовой стрелке на 1...

4
4AKE
29 / 29 / 18
Регистрация: 20.12.2010
Сообщений: 119
12.06.2016, 15:40 2
Можно через макросы(в Boost есть готовые)
пример из хабра (последний файл string_enum.h, до 32 элементов в enum'e)https://habrahabr.ru/post/236403/
вырезка из Boost http://ideone.com/dkh47G
Можно использовать Qt Enumhttp://stackoverflow.com/questions/3...num-to-qstring

Добавлено через 6 минут
или отказаться от enum и использовать map
1
Raali
670 / 367 / 82
Регистрация: 06.07.2013
Сообщений: 1,169
Завершенные тесты: 1
12.06.2016, 16:12  [ТС] 3
Цитата Сообщение от 4AKE Посмотреть сообщение
или отказаться от enum и использовать map
как же тогда хранить поле с характеристикой и сравнивать потом эти значения у разных экземпляров)

Добавлено через 6 минут
Цитата Сообщение от 4AKE Посмотреть сообщение
пример из хабра (последний файл string_enum.h, до 32 элементов в enum'e)https://habrahabr.ru/post/236403/
Да, есть оказывается неплохие макросы, которые позволяют все сделать одной строчкой)
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8135 / 4986 / 1436
Регистрация: 29.11.2010
Сообщений: 13,459
12.06.2016, 20:24 4
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
#include <iostream>
#include <string>
#include <vector>
 
#define NAMES_ENUM(DO) \
    DO(Denys) \
    DO(Rabbit) \
    DO(Milana) \
    DO(Olexandr)
 
#define MAKE_ENUM(VAR) VAR,
#define MAKE_STRINGS(VAR) #VAR,
 
enum Names
{
    NAMES_ENUM(MAKE_ENUM)
};
 
const std::vector<std::string> NamesValues
{ 
    NAMES_ENUM(MAKE_STRINGS)
};
 
int main()
{
    std::cout << NamesValues[Denys];
}
2
rikimaru2013
2515 / 1177 / 355
Регистрация: 30.11.2013
Сообщений: 3,790
12.06.2016, 20:58 5
Raali, советую BETTER_ENUM
1
12.06.2016, 20:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2016, 20:58

Laravel 5 ООП как сделать просто и красиво
Всем привет! Делаю биллинг на laravel и php, раньше с фреймворками не работал, с ООП безсистемно....

Как сделать красиво и правильно? ООП + PHP + MySQL
В одной из функций класса производится подключение к БД. Возможно ли реализовать что-то...

Как сделать красиво, если не нравятся похожие строки кода?)
Доброго времени суток! Опишу то, что я делаю и что мне бы хотелось сделать. У меня есть...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.