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?

Respuestas a la pregunta(5)

Su respuesta a la pregunta