我一直在尝试将地图结构转换为void指针,反之亦然。
void addToMap(void *data){
// add some elements to the map
}
map<string, vector<myStruct> > myMap;
addToMap(&myMap);
我正在尝试将myMap发送到addToMap函数作为参数,并在函数内添加一些元素。如何将void参数推荐回地图结构?
我知道static_cast可用于取消引用void类型以了解类型。例如:
int* a = new int();
void* b = static_cast<void*>(a);
int* c = static_cast<int*>(b);
上面的代码片段可行,但我猜想不是这种情况。我已经为我的情况试过了,也许还有另外一招。
答案 0 :(得分:2)
在addToMap函数中,可以将void指针强制转换回原始类型:
void addToMap(void *data){
auto pmap = static_cast<map<string, vector<myStruct> >*>(data);
pmap->insert(...);
}
static_cast还可以隐式执行所有允许的转换 (不仅是指向类的指针),而且还能够执行 与此相反。它可以:
从void *转换为任何指针类型。在这种情况下,它保证如果通过转换获得void *值 相同的指针类型,结果指针值是相同的。