C++ 在比较枚举类和int时避免强制转换
最后,我的同事使用了C++ 在比较枚举类和int时避免强制转换,c++,c++11,enums,casting,C++,C++11,Enums,Casting,最后,我的同事使用了enum类,而不是原来的enum 但是,当将int与枚举类值进行比较时,现在需要强制转换。至少IntelliSense这么说: 由于不必要的强制转换(因为基础类型是int),她现在希望保留旧的枚举 请帮我解释一下讨论中的论点。也许有一种技术方法可以避免强制转换?要么希望枚举值默认可转换为整数,要么不可转换为整数 如果您的值表示类似数字的内容,请选择普通enum 如果值未绑定到整数表示形式,请选择enum class 如果使用的是enum类,则不需要与int值进行比较;如果您
enum类
,而不是原来的enum
但是,当将int
与枚举类值进行比较时,现在需要强制转换。至少IntelliSense这么说:
由于不必要的强制转换(因为基础类型是int),她现在希望保留旧的枚举
请帮我解释一下讨论中的论点。也许有一种技术方法可以避免强制转换?要么希望枚举值默认可转换为整数,要么不可转换为整数 如果您的值表示类似数字的内容,请选择普通
enum
如果值未绑定到整数表示形式,请选择enum class
如果使用的是
enum类
,则不需要与int
值进行比较;如果您这样做,那么显式强制转换会将注意力吸引到可疑代码上;这是一件好事。要么希望枚举值默认可转换为整数,要么不可转换
如果您的值表示类似数字的内容,请选择普通enum
如果值未绑定到整数表示形式,请选择enum class
如果使用的是
enum类
,则不需要与int
值进行比较;如果您这样做,那么显式强制转换会将注意力吸引到可疑代码上;这是一件好事。显式转换是一件好事int
不是Colors
。如果你想避免演员阵容,首先不要有int
。请发布实际的代码,而不是代码的图片。还要注意IntelliSense不是编译器。不要依赖于它的消息,而是依赖于您正在使用的编译器的错误。有时这是错误的。在某个地方,我看到操作符+
重载,从枚举类返回一个我认为合理的int。使用枚举类
的全部目的是在比较过程中停止隐式转换。如果你想颠覆它,那么你最好还是回到使用enum
。显式强制转换是一件好事int
不是Colors
。如果你想避免演员阵容,首先不要有int
。请发布实际的代码,而不是代码的图片。还要注意IntelliSense不是编译器。不要依赖于它的消息,而是依赖于您正在使用的编译器的错误。有时这是错误的。在某个地方,我看到操作符+
重载,从枚举类返回一个我认为合理的int。使用枚举类
的全部目的是在比较过程中停止隐式转换。如果您想颠覆它,那么您最好返回使用enum
。