相关疑难解决方法(0)

如何在C++中使用枚举作为标志?

enums作为标志处理可以在C#中通过[Flags]属性很好地工作,但是在C++中执行此操作的最佳方法是什么?

例如,我想写:

enum AnimalFlags
{
    HasClaws = 1,
    CanFly =2,
    EatsFish = 4,
    Endangered = 8
};

seahawk.flags = CanFly | EatsFish | Endangered;
Run Code Online (Sandbox Code Playgroud)

但是,我收到关于int/ enum转换的编译器错误.是否有更好的表达方式而不仅仅是直接的铸造?优选地,我不想依赖来自第三方库的构造,例如boost或Qt.

编辑:如答案中所示,我可以通过声明seahawk.flags为避免编译器错误int.但是,我想有一些机制来强制执行类型安全,所以有人不能写seahawk.flags = HasMaximizeButton.

c++ enums

171
推荐指数
13
解决办法
13万
查看次数

为什么c ++中的char和bool大小相同?

我正在阅读C++编程语言.Stroustrup在其中陈述sizeof(char) == 11 <= sizeof(bool).具体取决于实施.为什么像布尔这样的简单值与char相同?

c++ boolean

31
推荐指数
4
解决办法
3万
查看次数

标签 统计

c++ ×2

boolean ×1

enums ×1