【发布时间】:2016-12-14 13:39:26
【问题描述】:
在我的代码中,我有这样的结构:
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};
我必须找到一种方法将所有这三个枚举存储在同一个向量中,让我可以像这样使用这个向量:
myVector.push_back(e1); //element of myEnum
...
myVector.push_back(e4); //element of myEnum2
...
我生成的软件是一个中间件,我将在一个运行时中只推回一种类型的枚举的元素。
基本上我想要实现的是让我的向量能够在里面存储三种不同类型的枚举,但是向量的名称不会改变。我为什么要这个?因为代码中有一个流分离并且基于分离我不知道在每个运行时开始时需要哪个枚举。
这可能吗?如果可以,我该如何实现?
编辑:谢谢大家的关注和回答,对不起,我忘了提供一个重要的细节。我的工作代码中的枚举不可编辑。它们是由框架生成的,我不能触摸它们。
提前谢谢...
【问题讨论】:
-
通过创建标记联合并将 that 存储在向量中,假设类型对您很重要。你也可以使用
boost::variant -
不幸的是,我无法使用任何第三方库。
-
我觉得你没有给我们足够的信息来继续。如果你只使用一种类型的枚举,在运行时决定,那么也许所有使用这些枚举的代码都应该被封装以使具体的枚举类型不重要。
-
我尽力提供尽可能多的细节。如果需要任何进一步的细节,请告诉我。
-
现在感觉就像XY problem。在运行时您最终只有一种枚举类型的事实意味着要进行一个抽象,而您并没有这样做。但是您没有提供足够的信息来清楚地帮助您定义它。