c++ - 将 c 枚举导入到 c++ 类定义

标签 c++ c enums

我有一堂这样的课:

class TType {
 public:
 ...
     enum binary_type {
        bt_a = 0,
        bt_xyz,
        ....
        bt_ak = 10,
        ....
     };
}

我在几个地方使用它,还有枚举:

   if(var12 == TType::bt_a ) { ....

现在我导入了一个 C 库,它的头文件之一内具有完全相同的枚举(相同的键、相同的值、相同的大小):

typedef enum data_types_e {
        bt_a = 0,
        bt_xyz,
        ....
} data_types;

如何在 C++ 类定义中定义枚举以使用 C 头文件的声明? 我想继续像以前一样使用枚举(TType::bt_a),并避免复制整个枚举。此外,我不想修改库(否则预处理器宏就可以解决问题),并且我希望在库中所做的更改也可以对我的类中的枚举进行。

在这种情况下,C++ 类定义中的 typedef 和类型别名 (c++11) 似乎都不起作用。

最佳答案

"How can I define the enum in the c++ class definition to use the declaration of the c headerfile?"

您可以简单地重用 c 风格枚举中的值:

 #include "TheOtherEnum.h"

 ...
     enum binary_type {
        bt_a = ::bt_a,
        bt_xyz = ::bt_xyz,
        ....
        bt_ak = ::bt_ak,
        ....
     };

"Neither a typedef inside the c++ class definition nor a type alias (c++11) seem to work in this situation."

是的,这些可以提供正确的枚举类型,但您仍然需要限定全局命名空间中的值,而不是嵌套到您的类中。

关于c++ - 将 c 枚举导入到 c++ 类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24674166/

相关文章:

c - C 新手 : Does declaration of int or long initialize values to zero

c - MPI 中的雅可比松弛

c++ - 如何使用方法指针作为另一个方法的参数?

c++ - 整数类型的模板函数特化

c++ - 定义编译时常量的最佳方法

用于将结构类型映射到枚举的 C++ 模板?

Swift 嵌套枚举通用类型

c++ - 我需要做什么才能使 ZMQ_RADIO/ZMQ_DISH 正常工作?

php - C execl 执行 PHP 脚本不在 STDOUT 中显示结果

java - 最高序数枚举值