【问题标题】:How is enum class similar to enum, or a class? [duplicate]枚举类与枚举或类有何相似之处? [复制]
【发布时间】:2013-02-06 15:54:20
【问题描述】:

enum class 类型是完全独立于传统类,还是类似的实现? enum class 是如何工作的?我问的原因是因为我不明白它如何同时与类和枚举相似。我假设枚举类不能有构造函数或内部方法?

【问题讨论】:

  • 与类无关。不要被糟糕的名字所迷惑。这只是一个更安全的枚举。
  • enum class 只是一个枚举,根本不像一个类。
  • 我很难击败 the descriptions here 作为起点。
  • This document 是我通过快速网络搜索找到的enum class 提案草案之一。它并没有说太多关于名称的选择,但确实谈到了人们通过将传统enums 包装在class 中来解决一些问题的方法。里面有像Like a class, the new enum type introduces its own scope 这样的短语,暴露了它背后的一些想法。

标签: c++ class enums enum-class


【解决方案1】:

它与普通的enum 相关,因为它由一组常量值的名称组成。它与 class 相关,因为名称都包含在类型名称的范围内。所以:

enum my_enum {
    first,
    second,
    third
};

my_enum value = second; // OK; enumeration names are in global scope here

enum class my_class_enum {
    fourth,
    fifth,
    sixth
};

my_class_enum other_value = fourth; // Error
my_class_enum another_value = my_class_enum::fourth; // OK

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2013-03-10
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多