如果我想表示使用二进制的"标志",这样我可以通过他们,并将它们存储到像一个对象状态或期权或类似的东西OPTION1 | OPTION2
在那里OPTION1
是0001 OPTION2
是0010,这样,所获取传递为0011,较选项的组合.
我将如何在C++中执行此操作?我在想类似的东西
enum Option {
Option_1 = 0x01,
Option_2 = 0x02,
Option_3 = 0x04,
//...
}
void doSomething(Option options) {
//...
}
int main() {
doSomething(Option_1|Option_2);
}
Run Code Online (Sandbox Code Playgroud)
但理想情况下,doSomething
知道如何解释给定的选项.
我是在正确的轨道上吗?有没有更好的办法?
更新
我不是必须Option
为每种可能的组合定义一个吗?
这是完成这些事情的常见方式.doSomething
可以使用按位运算and
符来查看是否选择了一个选项:
if (options & Option_1){
// option 1 is selected
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以考虑使用位域:
struct Options {
unsigned char Option_1 : 1;
unsigned char Option_2 : 1;
};
Options o;
o.Option_1 = 1;
o.Option_2 = 0;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6953 次 |
最近记录: |