读书人

enum不让小弟我这么玩

发布时间: 2012-05-21 18:04:41 作者: rapoo

enum不让我这么玩?
我想表示若干方向,但是enum不让我用|操作符,说我不合法地把int转换为enum:

C/C++ code
// 不要问我NORTH | SOUTH这种情况……enum Direction {    OTP_CENTER = 0,    OTP_NORTH = 8,    OTP_SOUTH = 4,    OTP_EAST = 2,    OTP_WEST = 1,    OTP_NORTH_EAST = OTP_NORTH | OTP_EAST,    OTP_NORTH_WEST = OTP_NORTH | OTP_WEST,    OTP_SOUTH_EAST = OTP_SOUTH | OTP_EAST,    OTP_SOUTH_WEST = OTP_SOUTH | OTP_WEST};Direction which = OTP_CENTER;if (some_condition) which |= OTP_NORTH; // error: invalid conversion from ‘int’ to ‘otp::Direction’ [-fpermissive]

应当怎么解决?定义一堆const?


[解决办法]
将which声明成为int类型的变量即可。
枚举常量就是int类型的常量。
你的代码试图改变常量的值,当然不可以。改成变量即可。

读书人网 >C++

热点推荐