enum-int casting: operador o función
En el código externo que estoy usando hay enum:
enum En {VALUE_A, VALUE_B, VALUE_C};
En otro código externo que estoy usando hay 3 directivas #define:
#define ValA 5
#define ValB 6
#define ValC 7
Muchas veces tengo int X, que es igual a ValA o ValB o ValC, y tengo que convertirlo al valor correspondiente de En (ValA a VALUE_A, ValB a VALUEB, etc.) porque alguna firma de función tiene enum En. Y muchas veces tengo que hacer la operación opuesta, traducir enum En a ValA o ValB o ValC. No puedo cambiar las firmas de estas funciones, y hay muchas de esas funciones.
La pregunta es: ¿Cómo hacer la traducción? ¿Debo crear 2 operadores de conversión, que se utilizarán implícitamente? ¿O debería tener solo 2 funciones de traducción que se utilizarán explícitamente:
En ToEn(int)
int FromEn(En)
¿O alguna otra solución?