Я предоставляю пример с разрешениями дисплея, но вопрос более общий.Как последовательно определять список опций для использования в качестве enum, int и string в одно и то же время?
Предположим, у нас есть следующие конфигурации: 640x480; 1024x768; 1600x900. Если они определены отдельно, это будет выглядеть примерно так:
std::string RESTR[] = { "640x480", "1024x768", "1600x900" };
struct Enum { enum ERes { _640x480, _1024x768, _1600x900 }; };
uint RES[][2] = { { 640, 480 }, { 1024, 768 }, { 1600, 900 } };
Это слишком подверженная ошибкам поддержка всех списков. Должно быть дан следующим образом (или по крайней мере что-то очень похожее):
Res( 640, 480)
Res(1024, 768)
Res(1600, 900)
Класс Разрешения Казался бы, прекрасным решением, он ведет себя как строка, когда это необходимо, и возвращает значение, в других случаях использования. Но перед запуском приложения он не имеет перечислений. Для использования разрешений в разработке требуется магия времени компиляции, требуется препроцессор или определение шаблона. Как это можно решить?
Существует ли стандартный современный подход к решению этой проблемы?
Пожалуйста, google «представление строки C++ enum» –
Я могу определить строки и перечисления сразу, но представление int все еще существует. – renonsz