我有一个旧的 C 库,我必须将它包装在 C++ 环境中。我使用 C++11 enum class
因为它们非常有用,我想将原始 enum
转换为新的 enum class
而不是简单地创建新的 enum class
并重写它。我想做一些像旧 C 中的 typedef
的事情:
enum num_oldc
{
one,
two,
three
};
typedef enum num_oldc num_oldc_t;
但是 one_t
必须可以通过它的范围 num_t::two
访问,就像我可以访问一个新的 C++11 enum 类
.
最佳答案
您将无法使用 typedef
执行此操作。但是,您可以按如下方式进行。
- 使用与 C 风格
enum
条目相对应的条目创建更好的enum 类
。 - 创建两个函数,用于在您的
enum 类
和 C 风格的enum
之间进行映射。 - 在您的包装器 API 中,仅使用
枚举类
。 - 在您的包装器的实现中,每当您需要与您正在包装的库交互时,与 C 风格的
enum
相互转换。
关于c++ - 将遗留的 c 枚举包装到 c++11 枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18494017/