gpt4 book ai didi

c++在一个函数参数中使用按位或 "|"的多个枚举

转载 作者:可可西里 更新时间:2023-11-01 16:26:05 26 4
gpt4 key购买 nike

我最近遇到了一些可以像这样传递多个枚举的函数:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com