gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:43 26 4
gpt4 key购买 nike

我有这样一个类:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com