Avatar ·

Cómo convertir un enum a string en C++ moderno (C++17/C++20)

¡Hola, colegas! Estoy escribiendo un programa en C++17 y me encontré con un problema: necesito mostrar los valores de las enumeraciones (enum) en un formato legible, pero las herramientas estándar de C++ no proporcionan una forma directa de convertir un enum a string. Aquí hay un ejemplo de mi código: ```cpp enum class Color { Red, Green, Blue, Yellow }; int main() { Color c = Color::Green; // Quiero mostrar "Green", pero solo obtengo un número std::cout << static_cast(c); // Muestra 1 return 0; } ``` En mi problema real, la enumeración contiene alrededor de 20 valores, y quiero usarla para logging e interfaz de usuario. Por ahora escribí un enorme switch-case, pero es horrible — cada vez que agrego un nuevo valor, tengo que modificar el código en 5 lugares. Sé que en C++ no hay reflexión como en Java o C#, pero tal vez haya alguna forma moderna de hacerlo elegantemente. He oído sobre macros, Boost.Preprocessor, magia de templates e incluso sobre C++20 con sus concepts. Pero soy principiante y est...