提问人:edumir 提问时间:11/7/2022 更新时间:11/7/2022 访问量:152
是否可以创建 std::type_info 数组?[复制]
Is it possible to create an array of std::type_info? [duplicate]
问:
我正在从内存映射导入数据,并且数据类型映射到某些整数值。
这是一个开关案例示例,我使用模板创建具有正确类型的值。但是,这个开关案例有更多的代码和许多其他案例。
void function(std::vector<int> impTypes, int idxImpValue)
{
// impTypes = array of imported datatypes
// idxImpValue = index of imported value
switch(impTypes[idxImpValue])
{
case 0: { double value = getValue<double>(idxImpValue); }
break;
case 6: { int value = getValue<int>(idxImpValue); }
break;
case 23: { uint64_t value = getValue<uint64_t>(idxImpValue); }
break;
return 0;
}
除了有大开关盒外,我还有很多开关盒,每当我需要改变一些东西时,这都会让我有点痛苦。
我想知道我是否可以摆脱开关大小写,以及我是否可以根据该整数值以某种方式将类型传递给模板,因此为什么如果我能创建一个 std::type_info 数组会很棒。
void function(std::vector<std::type_info> impTypes, int idxImpValue)
{
impTypes[idxImpValue] value = getValue<impTypes[idxImpValue]>(idxImpValue);
return 0
}
答:
1赞
j6t
11/7/2022
#1
是否可以创建一个 ?
std::type_info
不可以,因为没有构造函数,因此既不可移动也不可复制。std::type_info
但是,您可以拥有 std::vector<std::type_index>
并将其用作类型的数据库。
评论
value