Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在比较枚举类和int时避免强制转换_C++_C++11_Enums_Casting - Fatal编程技术网

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