2013-08-28 58 views
2

我有一个旧的C库,我必须将它包装在C++环境中。我使用C++ 11 enum class,因为它们非常有用,我想将原始的enum转换为新的enum class,而不用简单地创建新的enum class并重写它。我想这样做一个typedef在旧C:传统c枚举到C++ 11枚举类

enum num_oldc 
{ 
    one, 
    two, 
    three 
}; 

typedef enum num_oldc num_oldc_t; 

one_t必须通过其范围num_t::two访问正是以同样的方式我可以访问一个新的C++ 11 enum class

回答

0

您将无法使用typedef做到这一点。但是,您可以按如下所示进行操作。

  • 创建您的更好的enum class,其条目对应于您的C风格enum的条目。
  • 创建两个函数用于在您的enum class和C风格enum之间进行映射。
  • 在包装API中,只使用enum class
  • 在实现你的包装器时,无论何时需要与你打包的库进行接口,都可以从C风格enum转换为C风格。