c++ - 将遗留的 c 枚举包装到 c++11 枚举类

标签 c++ c++11 enums enum-class

我有一个旧的 C 库,我必须将它包装在 C++ 环境中。我使用 C++11 enum class 因为它们非常有用,我想将原始 enum 转换为新的 enum class 而不是简单地创建新的 enum class 并重写它。我想做一些像旧 C 中的 typedef 的事情:

enum num_oldc
{
    one,
    two,
    three
};

typedef enum num_oldc num_oldc_t;

但是 one_t 必须可以通过它的范围 num_t::two 访问,就像我可以访问一个新的 C++11 enum 类.

最佳答案

您将无法使用 typedef 执行此操作。但是,您可以按如下方式进行。

  • 使用与 C 风格 enum 条目相对应的条目创建更好的 enum 类
  • 创建两个函数,用于在您的 enum 类 和 C 风格的 enum 之间进行映射。
  • 在您的包装器 API 中,仅使用枚举类
  • 在您的包装器的实现中,每当您需要与您正在包装的库交互时,与 C 风格的 enum 相互转换。

关于c++ - 将遗留的 c 枚举包装到 c++11 枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18494017/

相关文章:

java - 如何创建具有公共(public)属性的枚举组

c++ - VCRedist 2015 Update 1 向后兼容吗?

c++ - 从 std::FILE* 创建 GIO GFile 或 GInputStream

c++ - 在 C++ 中过度杀伤 "crosses initialization of variable"错误?

C++更改结构在一个 vector 内的值,在一个结构内,在另一个 vector 内

c# - 实例验证错误 : '2' is not a valid value for QueryType.(Web 服务)

c# - 排序字典 - C#

c++ - 什么是 NULL 值

c++ - 随机数函数 (C++11)

c++ - 引用限定符的VIsual Studio 2013 C++问题