【发布时间】:2011-09-14 23:58:07
【问题描述】:
我需要在两个系统之间映射类型 - 源数据字段,可以是数字、字符或字符串,都存储为字符串对象;目标系统需要为每个数据字段的底层类型提供不同的数据类型,我需要动态地进行这种映射。
所以基本上,对于每个数据字段,我都有实际的字段字符串“s”和基础数据的类型“type”,并且我正在尝试根据“type”转换为“dest”类型。我一直在尝试使用模板和模板常量来破解可以做到这一点的东西,但没有运气。
我目前的尝试如下,但由于返回类型冲突,无法编译:
template<class CLASSTYPE, int CLASSID>
CLASSTYPE returnDifferentTypes()
{
using namespace std;
if (CLASSID == 1) // 1 = "string"
return std::string("returned string");
if (CLASSID == 2) // 2 = int
return 123;
if (CLASSID == 3) // 3 = double
return 123.123;
}
所以我一直在调用类似的东西
string mapped = returnDifferentTypes<string, 1>()
or
int mapped = returnDifferentTypes<int, 2>()
谁能推荐一种更智能的清洁方法来做到这一点?理想情况下,我试图返回适当的返回类型,其中只包含一个表示要映射到的类型的字符串。提前致谢。
【问题讨论】: