如何在C ++中使用枚举作为标志?
将enum
s作为标志处理可以在C#中通过[Flags]
属性很好地工作,但是在C ++中执行此操作的最佳方法是什么?
例如,我想写:
enum AnimalFlags{ HasClaws = 1, CanFly =2, EatsFish = 4, Endangered = 8};seahawk.flags = CanFly | EatsFish | Endangered;
但是,我收到关于int
/ enum
转换的编译器错误。是否有更好的表达方式而不仅仅是直接的铸造?优选地,我不想依赖来自第三方库的构造,例如boost或Qt。
编辑:如答案中所示,我可以通过声明seahawk.flags
为避免编译器错误int
。但是,我想有一些机制来强制执行类型安全,所以有人不能写seahawk.flags = HasMaximizeButton
。
波斯汪
红颜莎娜
明月笑刀无情
相关分类