我最近遇到了一些可以像这样传递多个枚举的函数:
myFunction(One | Two);
因为我认为这是一种非常优雅的方式,所以我尝试自己实现类似的东西:
void myFunction(int _a){
switch(_a){
case One:
cout<<"!!!!"<<endl;
break;
case Two:
cout<<"?????"<<endl;
break;
}
}
现在如果我尝试用 One | 调用函数第二,我希望两个 switch case 都被调用。我不太擅长二元运算符,所以我真的不知道该怎么做。任何想法都会很棒!
谢谢!
最佳答案
为此你必须像这样制作枚举:
enum STATE {
STATE_A = 1,
STATE_B = 2,
STATE_C = 4
};
即枚举元素值应为 2 的幂,以选择有效的大小写或 if 语句。
所以当你喜欢的时候:
void foo( int state) {
if ( state & STATE_A ) {
// do something
}
if ( state & STATE_B ) {
// do something
}
if ( state & STATE_C ) {
// do something
}
}
int main() {
foo( STATE_A | STATE_B | STATE_C);
}
关于c++在一个函数参数中使用按位或 "|"的多个枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1874051/