将旧版c枚举包装到c++;11枚举类 我有一个旧的C库,我必须把它包在C++环境中。我使用C++11enum类,因为它们非常有用,我想将原始的enum转换成一个新的enum类,而不需要简单地创建新的enum类并重写它。我想做一些像旧C中那样的typedef: enum num_oldc { one, two, three }; typedef enum num_oldc num_oldc_t;

将旧版c枚举包装到c++;11枚举类 我有一个旧的C库,我必须把它包在C++环境中。我使用C++11enum类,因为它们非常有用,我想将原始的enum转换成一个新的enum类,而不需要简单地创建新的enum类并重写它。我想做一些像旧C中那样的typedef: enum num_oldc { one, two, three }; typedef enum num_oldc num_oldc_t;,c++,c++11,enums,enum-class,C++,C++11,Enums,Enum Class,但是one\u t必须通过其作用域num\u t::two进行访问,就像我可以访问一个新的C++11enum类一样您将无法使用typedef执行此操作。但是,您可以按如下方式执行 创建更好的enum类,其中的条目与C-styleenum的条目相对应 创建两个函数,用于在enum类和C样式enum之间进行映射 在包装器API中,仅使用enum类 在包装器的实现中,只要需要与正在包装的库进行接口,就可以在C-styleenum之间进行转换

但是
one\u t
必须通过其作用域
num\u t::two
进行访问,就像我可以访问一个新的C++11
enum类一样

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

  • 创建更好的
    enum类
    ,其中的条目与C-style
    enum的条目相对应
  • 创建两个函数,用于在
    enum类
    和C样式
    enum
    之间进行映射
  • 在包装器API中,仅使用
    enum类
  • 在包装器的实现中,只要需要与正在包装的库进行接口,就可以在C-style
    enum
    之间进行转换