通过[Flags]
属性将enum
作为标志在C#中工作得很好,但是在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
了。
https://stackoverflow.com/questions/1448396
复制相似问题