我是 C++ 的新手,所以提前道歉,
假设我有 2 个枚举:
enum Side
{
Left,
Right
};
enum Direct
{
Forward,
Backward
};
我想要一个对象,我可以在其中保存枚举值,然后在不知道使用了哪个实际枚举的情况下检索它,
例如:
Direct direction = Direct::Left;
myStruct.genericEnum = direction;
Side side = myStruct.genericEnum;
这怎么可能?我应该使用通用类型吗? (不确定我对它们的理解是否足以使用它们),我是否需要将枚举保存为 myStruct 中的 int,然后在读回值时显式转换? (这对我来说似乎很乱)提前致谢
最佳答案
您正在寻找的是 union :
struct MyStruct {
union { Side side; Direct direct; } genericEnum;
};
Direct direction = Direct::Left;
myStruct.genericEnum.direct = direction;
Side side = myStruct.genericEnum.side;
但我不得不问:你真的确定这样做是明智的吗?好像自找麻烦。
(这样的泛型不是您要找的:它们纯粹是编译时构造,无助于存储一种类型的值并将其解释为另一种类型。)
关于C++如何编写通用结构来保存任何枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5314058/