Вы можете заставить функцию принимать любой понравившийся вам тип, сделав ее шаблоном:
enum Enum a {one, two};
enum Enum b {red, white};
template <typename EnumType>
void useEnum (EnumType anyEnum){
//do something
}
Однако я сильно сомневаюсь, что это хорошая идея написать одну функцию, которая работает с числами и цветами. Не зная больше контекста, я бы предпочел пойти на перегрузки или даже более явно:
void useNumber(a number){}
void useColor(b color){}
PS: Если вы останетесь с одной функцией для разных перечислений, то знайте, что вы в основном делаете шаг назад. Основная цель перечислений состоит в том, чтобы иметь перечисления, безопасные для типов (enum class
добавляет больше типов безопасности), тогда как внутри ваших useEnum
единственное, что объединяет два перечисления, - это то, что они имеют элементы с базовыми значениями 0
и 1
и вот над чем вы будете работать. На этом этапе использование перечислений не имеет больше преимуществ по сравнению с использованием необработанных 0
и 1
.