Avatar ·

Como converter enum para string em C++ moderno (C++17/C++20)

Olá, colegas! Estou escrevendo um programa em C++17 e me deparei com um problema: preciso exibir valores de enumerações (enum) de forma legível, mas os recursos padrão do C++ não fornecem uma maneira direta de converter enum para string.\n\nAqui está um exemplo do meu código:\n\n```cpp\nenum class Color {\n Red,\n Green,\n Blue,\n Yellow\n};\n\nint main() {\n Color c = Color::Green;\n // Quero exibir "Green", mas recebo apenas um número\n std::cout << static_cast(c); // Exibe 1\n return 0;\n}\n```\n\nNo meu problema real, a enumeração contém cerca de 20 valores, e quero usá-la para logging e interface do usuário. Por enquanto, escrevi um enorme switch-case, mas isso é horrível — cada vez que adiciono um novo valor, preciso corrigir o código em 5 lugares.\n\nEu sei que em C++ não há reflexão