приведение 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)
Или любое другое решение?