作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有这样一个类:
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),并避免复制整个枚举。此外,我不会修改库(否则预处理器宏就可以解决问题)并且我希望在库中所做的更改也适用于我类(class)中的枚举。
在这种情况下,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/
我是一名优秀的程序员,十分优秀!