У меня есть некоторый код, который я использую, чтобы дать мне список строк, которые совпадают с именами членов перечисления, чтобы я мог легко анализировать текстовые файлы, которые используют имена, в перечисления. (Я на самом деле генерирую его автоматически с помощью макроса, но это уже другая история.) Код прекрасно работает на современных компиляторах, работающих на C ++ 17, но одна из моих целевых платформ не имеет поддержки C ++ 17, и я хотел бы прийти с альтернативой, которая работает на C ++ 14 (и в идеале C ++ 11). Текущий код:
class A
{
enum MatchType { Linear, Square };
static constexpr const char * matchTypeStrings[ 2 ] = { "Linear", "Square" };
static const size_t matchTypeCount = 2;
};
Я бы предпочел не указывать глобальную область действия enum, потому что это никогда не заканчивается хорошо, и в идеале я не хочу добавлять что-либо в один из файлов. cpp ( что, конечно, исправит ошибку компоновщика, но я думаю, что это не рекомендуется для кода C ++ 17 и не будет работать с моим макросом в любом случае). Я мог ли я создать функцию-член, которая могла бы вместо этого возвращать строковое значение, но я не могу придумать, как это сделать.