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

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

我有一个旧的 C 库,我必须将它包装在 C++ 环境中。我使用 C++11 enum class因为它们非常有用,我想对原来的 enum 进行改造进入新的enum class无需简单地创建新的 enum class并重写它。我想做一些类似 typedef 的事情与旧 C 一样:

enum num_oldc
{
    one,
    two,
    three
};

typedef enum num_oldc num_oldc_t;

但是one_t必须可以通过其范围 num_t::two 访问完全一样,我可以访问新的 C++11 enum class .

最佳答案

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

  • 创造更好的enum class与您的 C 风格的条目对应的条目 enum .
  • 创建两个函数用于您的 enum class 之间的映射。和 C 风格 enum .
  • 在您的包装 API 中,仅使用 enum class .
  • 在包装器的实现中,转换为 C 风格 enum每当您需要与要包装的库进行交互时。
  • 关于c++ - 将遗留 c 枚举包装到 c++11 枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18494017/

    相关文章:

    c++ - Linux 上的用户界面

    c++ - 从更好的随机源中为随机数播种伪随机生成器

    c++ - 为什么在有效的现代C++项目25中说“不会出现临时的std::string对象”?

    c++ - 共享指针无法分配而工作

    c# - 如何从 C# 中的字符串中获取枚举值?

    c++ - 字符串类型的C++ union

    c++ - 为什么此函数不调用move构造函数?

    .net - 应对滞后的枚举支持

    delphi - 标记/未标记一组枚举中的另一个选项

    c++ - 奇怪的SIGKILL错误