3

我有一个旧的 C 库,我必须将它包装在 C++ 环境中。我使用 C++11enum class是因为它们非常有用,而且我想将原始版本enum转换为新版本enum class,而不是简单地创建新enum class版本并重写它。我想做一些像typedef旧C一样的事情:

enum num_oldc
{
    one,
    two,
    three
};

typedef enum num_oldc num_oldc_t;

one_t必须完全可以通过其范围访问,num_t::two就像我可以访问新的 C++11 一样enum class

4

1 回答 1

0

您将无法使用typedef. 但是,您可以按如下方式进行。

  • enum class使用与您的 C-style 的条目相对应的条目创建您的 nicer enum
  • 创建两个函数用于在您的enum class和 C 样式之间进行映射enum
  • 在您的包装 API 中,仅使用enum class.
  • enum在包装器的实现中,只要您需要与要包装的库进行交互,就可以在 C 风格之间进行转换。
于 2013-08-28T18:23:20.950 回答