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

时间:2013-08-28 17:03:16

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

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

enum num_oldc
{
    one,
    two,
    three
};

typedef enum num_oldc num_oldc_t;

one_t必须可以通过其范围num_t::two访问,就像我访问新的C ++ 11 enum class一样。

1 个答案:

答案 0 :(得分:0)

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

  • 使用与您的C风格enum class条目相对应的条目创建更好的enum
  • 创建两个函数,用于在enum class和C风格enum之间进行映射。
  • 在您的包装器API中,仅使用enum class
  • 在您的包装器的实现中,只要您需要与要包装的库进行交互,就可以在C样式enum之间进行转换。