2013-08-28 61 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風格。