我应该如何计算我的枚举?

时间:2016-12-18 12:19:14

标签: c++ enums

通常情况下,当我创建一个枚举时,每个都会增加一个,见

for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):

但在我查看了一些源代码之后,我看到人们在做这样的事情

enum
{
    A = 0,
    B,
    C,
    D
};

我明白这意味着什么,但这究竟是什么让我受益?有什么好处吗?在我看来,我只看到这使得它看起来不必要。

2 个答案:

答案 0 :(得分:7)

第二种形式创建用于位掩码的标志。通常这样做是为了在具有几个控制其行为的布尔条件的对象中节省空间。

struct foo {
    std::uint32_t bitmask; // up to 32 different flags.
};

foo obj;
obj.bitmask = (B | D); // Sets the bits 0 and 2 

答案 1 :(得分:5)

它创建了一个具有唯一位设置的位掩码类型,因此保证表达式B | CD不相同。

如果您只想要未组合的唯一枚举值,则第一个版本完全正常。而且您不必使用= 0作为第一个值。无论如何,这将是默认值。