Перенесите устаревшее перечисление в класс перечисления с ++ 11

У меня есть старая библиотека C, и я должен обернуть ее в среде C ++. Я использую C ++ 11 enum class потому что они так полезны, и я хотел бы сделать трансформацию оригинала enum в новый enum class без просто создать новый enum class и переписать это. Я хотел бы сделать что-то вроде typedef как в старом С:

enum num_oldc
{
one,
two,
three
};

typedef enum num_oldc num_oldc_t;

Но one_t должен быть доступен через область видимости num_t::two точно так же, как я могу получить доступ к новому C ++ 11 enum class,

2

Решение

Вы не сможете сделать это с typedef, Однако вы можете сделать это следующим образом.

  • Создайте свой лучше enum class с записями, которые соответствуют записям вашего C-стиля enum,
  • Создайте две функции для сопоставления между вашими enum class и стиль С enum,
  • В вашем API-оболочке используйте только enum class,
  • В реализации вашей обертки конвертировать в и из C-стиля enum всякий раз, когда вам нужно взаимодействовать с библиотекой, которую вы упаковываете.
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector