当前位置: 首页 > 知识库问答 >
问题:

更喜欢哪一个?枚举类,还是嵌套的未命名枚举类型?

潘修为
2023-03-14
enum Color1 { red, blue, green }; // ok
// enum Color2 { red, blue, green }; // error, enum conflicts

struct Color3
{
    enum { red, blue, green }; // ok, no conflicts
};

enum class Color4 { red, blue, green }; // ok, no conflicts
  1. color1color2都是弱类型。
  2. color3color4都是强类型。

我的问题是:

1.color3color4有什么区别吗?

2.选择哪一种?color3还是color4?为什么?

共有1个答案

冯阳云
2023-03-14

color3color4都是强类型

不,试试这个:

int x = Color3::red; // ok
int y = Color4::red; // error: cannot convert from 'Color4' to 'int'

遗留枚举可以隐式转换为整数,但enum class是它自己的类型。

至于更喜欢哪一个,请参见为什么枚举类比普通枚举更受欢迎?

 类似资料:
  • 当您需要定义错误码和错误信息时,可能会使用以下方式, <?php class ErrorCode { const SERVER_ERROR = 500; const PARAMS_INVALID = 1000; public static $messages = [ self::SERVER_ERROR => 'Server Error',

  • 问题内容: 例如,我该怎么做: 结果示例: 问题答案: 迅捷4.2+ 从Swift 4.2(使用Xcode 10)开始,只需添加协议一致性即可从中受益。要添加此协议一致性,您只需要在某处写: 如果枚举是您自己的,则可以直接在声明中指定一致性: 然后,以下代码将打印所有可能的值: 与早期Swift版本(3.x和4.x)的兼容性 如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿S

  • 当你进入网站时,按钮“继续”可以有两个选项:class="button "或class="btn "。如何在一个FindElement中同时搜索两个类?我不知道它应该是什么样子,但就像这样(示意性地) 或者更容易使用? 这不是工作。 感谢您的关注

  • 枚举类(“新的枚举”/“强类型的枚举”)主要用来解决传统的C++枚举的三个问题: 传统C++枚举会被隐式转换为int,这在那些不应被转换为int的情况下可能导致错误 传统C++枚举的每一枚举值在其作用域范围内都是可见的,容易导致名称冲突(同名冲突) 不可以指定枚举的底层数据类型,这可能会导致代码不容易理解、兼容性问题以及不可以进行前向声明 枚举类(enum)(“强类型枚举”)是强类型的,并且具有类

  • 为什么要在C++11中编译: 但这不是: