Busco una especie de hacky solución al siguiente problema: GCC 4.4+ acepta el siguiente código C++ 0x:emulación "clase de enumeración" o alternativa sólida para MSVC 10,0
enum class my_enum
{
value1,
value2
};
Qué permite el uso como este:
my_enum e = my_enum::value1;
con todas las características que esto conlleva. Me gustaría hacer que este código sea compatible con MSVC 2010, en el sentido de que la sintaxis de uso no cambia. Ya pondere esto antes de here, y la respuesta aceptada funciona, pero la necesidad de los dos nombres diferentes para los valores enum y enum está acabando con la compatibilidad de los dos enfoques. Esto hace, por supuesto, inutilizable reemplazar el código C++ 0x tal como está. Me pregunté si algunos trucos de #undef
y #define
podrían solucionar esto, permitiéndome usarenum class
-como la sintaxis (quizás sin el tipo de seguridad estricto, etc.), pero al menos con la misma sintaxis. ¡Gracias!
Muy buena solución. –
Solución increíble. Esto debería ser wikied. – FailedDev
Este enfoque no parece permitir 'switch' /' case', al menos en MSVC 10 (obtengo "C2051: expresión de caso no constante"). Este es un gran PITA, ya que los 'enum's se usan normalmente de esta manera. –