【问题标题】:Avoid cast while comparing enum class with int [closed]在将枚举类与 int 进行比较时避免强制转换 [关闭]
【发布时间】:2017-06-30 12:59:34
【问题描述】:

我终于convinced我的同事使用enum class而不是旧的enum

但是,当将int 与枚举类值进行比较时,现在需要进行强制转换。至少 IntelliSense 是这么说的:

由于这种不必要的强制转换(因为基础类型是 int),她现在想继续使用旧的枚举...

请帮助我解决讨论中的论点。也许有一种技术方法可以避免演员表?

【问题讨论】:

  • 显式转换是件好事。 int 不是 Colors。如果你想避免演员,首先不要有int
  • 请发布实际代码,而不是代码图片。 TIA。
  • 另请注意,IntelliSense 不是编译器。不要依赖它的消息,而要依赖你正在使用的编译器的错误。有时是错的。
  • 某处 SO 我看到 operator+ 的重载从我认为合理的枚举类返回一个 int。
  • 使用enum class 的重点是在比较期间停止隐式转换。如果你想颠覆它,那么你还不如回到使用enum

标签: c++ c++11 enums casting


【解决方案1】:

您希望枚举值可以默认转换为整数,或者您不希望。

如果您的值表示类似数字的事物,请选择普通的 enum

如果您的值与其整数表示无关,请选择 enum class

如果您使用的是enum class,那么您不需要与int 值进行比较;如果你这样做了,那么显式转换会引起对可疑代码的注意;这是一件好事。

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    相关资源
    最近更新 更多