C++ 我可以使用泛型枚举类型作为函数的参数吗?

C++ 我可以使用泛型枚举类型作为函数的参数吗?,c++,enums,parameters,C++,Enums,Parameters,我想把一个参数传递给一个函数,它是一个枚举。但我创建了许多不同的枚举,所以我希望该函数对所有枚举都有用。可能吗?我想做的是这样的: enum Enum a {one, two}; enum Enum b {red, white}; void useEnum (enum anyEnum){ //do something } 通过将函数设置为模板,可以使其接受您喜欢的任何类型: enum Enum a {one, two}; enum Enum b {red, white}; temp

我想把一个参数传递给一个函数,它是一个枚举。但我创建了许多不同的枚举,所以我希望该函数对所有枚举都有用。可能吗?我想做的是这样的:

enum Enum a {one, two};
enum Enum b {red, white};

void useEnum (enum anyEnum){
    //do something
}

通过将函数设置为模板,可以使其接受您喜欢的任何类型:

enum Enum a {one, two};
enum Enum b {red, white};

template <typename EnumType>
void useEnum (EnumType anyEnum){
    //do something
}

PS:如果您只使用一个函数来处理不同的枚举,那么请注意,您基本上是在倒退。枚举的主要用途是具有类型安全的枚举(
enum类
增加了更多的类型安全性),而在
useEnum
中,这两个枚举唯一的共同点是它们的元素具有底层值
0
1
,这就是您将要处理的内容。此时,与使用原始
0
1
相比,使用枚举没有更多优势。您可以通过将函数设置为模板,使其接受您喜欢的任何类型:

enum Enum a {one, two};
enum Enum b {red, white};

template <typename EnumType>
void useEnum (EnumType anyEnum){
    //do something
}

PS:如果您只使用一个函数来处理不同的枚举,那么请注意,您基本上是在倒退。枚举的主要用途是具有类型安全的枚举(
enum类
增加了更多的类型安全性),而在
useEnum
中,这两个枚举唯一的共同点是它们的元素具有底层值
0
1
,这就是您将要处理的内容。在这一点上,与使用原始
0
1
相比,使用枚举没有更多的优势,任何事情都是可能的,但始终取决于细节。什么是
//做点什么
?做一个泛型函数,这里有什么问题吗?你听说过我们的lord and savoir:Templates吗?在你的例子中,
one
red
的值可能是相同的——你的函数应该如何处理这个问题呢?。。。或者您可以使用
int
或任何其他整数类型,它们可以保存所有枚举的所有值(最好是
std::common_type
,但在大多数情况下
int
就足够了),任何事情都是可能的,但始终取决于细节。什么是
//做点什么
?做一个泛型函数,这里有什么问题吗?你听说过我们的lord and savoir:Templates吗?在你的例子中,
one
red
的值可能是相同的——你的函数应该如何处理这个问题呢?。。。或者您可以使用
int
或任何其他整数类型,它们可以保存所有枚举的所有值(最好是
std::common_type
,但在大多数情况下
int
就足够了)谢谢,这就是我要找的。这些名字只是例子。@verlsk不要错过刚刚添加的PS,如果你喜欢,当然可以接受答案;)谢谢,这正是我想要的。这些名字只是例子。@verlsk不要错过刚刚添加的PS,如果你喜欢,当然可以接受答案;)