【问题标题】:How to convert a typedef enum into using enum in C++如何在 C++ 中将 typedef 枚举转换为使用枚举
【发布时间】:2022-01-08 03:43:57
【问题描述】:

我正在尝试探索 C++ 中的“使用”,目前我想将 typedef 转换为 using。

例如,

typedef enum tag_EnumType : int {
    A,
    B,
    C,
} EnumType;

我尝试将其转换如下

using EnumType = enum tag_EnumType : int {
    A,
    B,
    C,
};

但是,编译失败。有人可以帮忙吗?提前致谢。

事实上,我正在做一个巨大的项目。一些 typedef 枚举可以重写为 using,但其他则不能。有谁知道原因?是跟命名空间有关吗?

【问题讨论】:

  • 你问为什么有些可以重写,如果你提供一个例子你可能会增加答案的机会
  • @MatG thx 求建议,好像 using 定义的命名空间中的枚举无法重写,所以我想知道是否是因为 C++ using 的一些特殊有机体
  • 我删除了我的答案,因为我在回答您的代码确实有效时没有意识到。就像现在一样,我想说这个问题在没有细节的情况下是不可重现的。
  • "编译失败" 究竟是怎么回事?什么错误信息?
  • 为什么要使用typedefusing?具体原因?为什么不直接写enum EnumType : int { ... },这是C++ 中的常用方式。 typedefusing 都不需要。

标签: c++ enums using


【解决方案1】:

typedef enum 是一种创建枚举的 C 方法。如果你想要 C++ 的方式,你最好写:

enum EnumType : int {
    A,
    B,
    C,
};

在 C++11 及更高版本中,还可以使用作用域枚举,这样可以防止名称冲突。

 enum class EnumType : int {
    A,
    B,
    C,
};

using 语句用于其他类型定义,一些示例:

using IntVector = std::vector<int>;
using Iterator = IntVector::Iterator;
using FuncPtr = int(*)(char, double);

【讨论】:

    猜你喜欢
    • 2012-05-02
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多