【发布时间】:2020-12-05 00:41:12
【问题描述】:
我现在正在抽象我的问题,但我处于这种情况。 假设我有 2 个枚举在同一个命名空间中。
namespace some_namespace {
enum class Something{
S,
O,
M,
E,
T,
H,
I,
N,
G
};
enum class Else{
E,
L,
S
};
}
现在让我们创建 2 个结构体,它们将这些枚举的一些值作为静态字段。
struct SomeStruct{
static constexpr int enumValue = static_cast<int>(some_namespace::Something::T);
};
struct AnotherStruct {
static constexpr int enumValue = static_cast<int>(some_namespace::Something::O);
};
如何检查这 2 个结构的 enumValues 是否来自同一个 enum class?我想我应该给我的枚举字段一些值,并在枚举值上使用一些按位运算符来区分?有人可以帮忙吗?谢谢)
【问题讨论】:
-
你不能。 C++ 不能以这种方式工作。当你完成声明它们时,它们只是普通的、无名的
ints。它们原来的枚举类型已被永远剥离,消失在以太的神秘之中。 -
有人想知道为什么不将它们保存为原始枚举?
-
我认为有一种方法可以为枚举元素分配一些整数值,然后例如
auto same.= SomeStruct::enumValue & AnotherStruct::enumValue if(same == 1){//same enum} else {//not same enum}
标签: c++ struct enums integer compare