在我的代码中,我有这样的结构:
enum myEnum{ e1, e2, e3};
std::vector myVector<myEnum>;
...
myVector.push_back(e1);
...
myVector.push_back(e2);
...
我需要做的是,我必须定义另外两个枚举
enum myEnum2{ e4, e5, e6};
enum myEnum3{ e7, e8, e9};
我必须找到一种方法将所有这三个枚举存储在同一个 vector 中,让我可以像这样使用这个 vector :
myVector.push_back(e1); //element of myEnum
...
myVector.push_back(e4); //element of myEnum2
...
我生成的软件是一个中间件,我将在单个运行时中仅推回一种枚举类型的元素。
基本上我想要实现的是让我的 vector 能够在内部存储三种不同类型的枚举,但 vector 的名称不会改变。我为什么要这个?因为代码中存在流分离,并且基于分离,我不知道在每个运行时开始时需要哪个枚举。
这可能吗?如果可以,我该如何实现?
编辑:谢谢大家的关注和回答,抱歉我忘了给出一个重要的细节。我的工作代码中的枚举不可编辑。它们是由框架生成的,我不能碰它们。
提前致谢...
最佳答案
这些枚举器中的每一个都可以转换为整数值,并且可以存储该值。您还必须消除值中的重叠。所以:
enum myEnum { e1, e2, e3 };
enum myEnum2 { e4 = e3 + 1, e5, e6 };
enum myEnum3 { e7 = e6 + 1, e8, e9 };
std::vector<int> myVector;
myVector.push_back((int)e1);
当然,转换值和恢复值的细节应该封装在一个类中,而不是像这里的push_back
调用那样暴露。
关于c++ - 在同一个 vector 中存储不同种类的枚举 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41144068/