我有一堂这样的课:
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/