#include enum class T { NONE, A, Bb, Ccc, Dddd, Eeeee, Ff, DEFAULT }; struct TName { const char* name; T t; }; TName tnames[] = { {"None", T::NONE}, {"A", T::A}, {"Bb", T::Bb}, {"Ccc", T::Ccc}, {"Dddd", T::Dddd}, {"Eeeee", T::Eeeee}, {"Ff", T::Ff}, {"DEFAULT", T::DEFAULT}, {nullptr, T::DEFAULT} }; T GetTByName(const char* name) { T r = T::DEFAULT; if (name) { for (int i = 0; tnames[i].name; ++i) { if (strcmp(name, tnames[i].name) == 0) { r = tnames[i].t; break; } } } return r; }