2013-08-28 5 views
2

저는 오래된 C 라이브러리를 가지고 있으며 C++ 환경으로 랩핑해야합니다. 그들은 C++ 11 enum class을 사용합니다. 왜냐하면 그것들은 매우 유용하기 때문에 원래 enum을 새로운 enum class으로 변환하고 새로운 enum class을 간단히 작성하고 다시 쓰지 않고 변환하고 싶습니다. 나는 기존의 C에서와 같이 typedef 그런 짓을하고 싶습니다 :레거시 C 열거 형을 C++ 11 열거 형 클래스로 바꿈

enum num_oldc 
{ 
    one, 
    two, 
    three 
}; 

typedef enum num_oldc num_oldc_t; 

그러나 one_t 정확히 같은 방식으로 나는 새로운 C++ (11) enum class에 액세스 할 수의 범위 num_t::two를 통해 액세스 할 수 있어야합니다.

답변

0

typedef으로는이 작업을 수행 할 수 없습니다. 그러나 다음과 같이 할 수 있습니다.

  • 만들기 당신의 당신의 C 스타일 enum의 항목에 해당하는 항목이 enum class 좋네요.
  • enum class과 C 스타일 enum 사이의 매핑을위한 두 가지 함수를 만듭니다.
  • 래퍼 API에서 enum class 만 사용하십시오.
  • 랩핑을 구현할 때 랩핑 할 라이브러리와 인터페이스 할 필요가있을 때마다 C 스타일 enum으로 변환하거나 변환하십시오.