C++ 独立列出所有枚举标志

标签 c++ enums flags

我目前有一组枚举用作标志

enum Flags {
    Flag1 = 1
    Flag2 = 2
    Flag3 = 4
    Flag4 = 8
};

等等等等。然后我使用内联来使 | 允许它们组合。使用这个系统,我可以使用简单的 if 语句检查独立标志。

以这种方式打印组合标志会产生它们的总和,即:Flag2 | Flag4 会产生 10

我的问题是,是否有一种方法可以将当前分配给某个事物的所有标志列为独立的整数,而不是它们的总和。

最佳答案

是的。

enum Flags {
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8,
};

uint32_t my_flags = Flag1 | Flag2;

if(my_flags & Flag1) { cout << "I have flag 1" << endl; }
if(my_flags & Flag2) { cout << "I have flag 2" << endl; }

// etc.

你是这个意思吗?

关于C++ 独立列出所有枚举标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30930399/

相关文章:

c++ - 打开文件浏览器?

c - Linux/include 目录枚举

c++ - 用 Doxygen 或类似工具记录枚举标志

类定义中结构数组的 C++ 问题

C 中的 enum 可以用 const 代替吗?

linux - 如何将 linux 链接器中的 -lXi 标志转换为适当的库?

c - fprintf() 打印 0 而不是完整的浮点值(转换问题?)

面向.NET Core 3.1的C++/CLI

c++ - 为什么不从构造函数中推断模板参数?

c++ - 有没有办法在未选中复选框时隐藏按钮?