приведение enum-int: оператор или функция

Во внешнем коде, который я использую, есть enum:

enum En {VALUE_A, VALUE_B, VALUE_C};

В другом внешнем коде, который я использую, есть 3 директивы #define:

#define ValA 5
#define ValB 6
#define ValC 7

Во многих случаях у меня есть int X, равное ValA или ValB или ValC, и мне приходится приводить его к соответствующему значению En (ValA к VALUE_A, ValB к VALUEB и т. Д.), Потому что в сигнатуре некоторых функций есть enum En. И много раз мне приходилось делать противоположную операцию, переводить enum En в ValA или ValB или ValC. Я не могу изменить подписи этих функций, и таких функций много.

Вопрос в том, как сделать перевод? Должен ли я создать 2 оператора приведения, которые будут использоваться неявно? Или я должен просто иметь 2 функции перевода, которые будут использоваться явно:

En ToEn(int)
int FromEn(En)

Или любое другое решение?

Ответы на вопрос(5)

Ваш ответ на вопрос