【发布时间】:2016-09-22 09:30:08
【问题描述】:
我需要在两组枚举之间进行映射。枚举之间是一一对应的。
例如
第一组:
Enum1{A, B, C, D};
Enumx...
Enumy...
第二套:
Enum2{A2, B2, C2, D2};
Enumx2...
Enumy2...
地图功能:
Enum1 map(Enum2);
Enumx map(Enumx2);
Enumy map(Enumy2);
我正在寻找一种优雅的方式来制作这张地图。 我可以使用模板专业化吗?还是枚举都被视为整数?
例子:
class MapHelper{
public:
template<typename From, To>
static To map(From from);
template<>
static Enum1 map<Enum2, Enum1>(Enum2 from){
return static_cast<Enum1>(from);
}
};
【问题讨论】:
-
你走了多远?你试过什么?您遇到的具体问题是什么? :)
-
我遇到的问题是我还必须指定返回类型并用两种类型参数化函数,我想只用一种参数化它并在后面有一个类型映射,但我没有不知道怎么做。
-
拜托,你能告诉我们你的部分解决方案吗?这样我们就可以确定我们谈论的是同一件事并为正确的问题提供帮助:)
-
我加了一个例子
-
枚举是否总是按顺序排列,并且每个枚举中的元素数量相同?