【发布时间】:2016-03-01 10:03:45
【问题描述】:
讨论
我知道将void 指针转换为其他类型的指针的正确方法是使用static_cast。 (例如,
void *vptr;
...
foo* fptr = static_cast<foo*>(vptr);
)
我拥有的是一对void 指针(即std::pair<void*, void*>),我想将其转换为一对其他类型的指针(例如std::pair<foo*, bar*>)。
我能想到的最天真的方法是:
std::pair<void*, void*> vpr;
...
std::pair<foo*, bar*> fbpr = std::make_pair(static_cast<foo*>(vpr.first), static_cast<bar*>(vpr.second));
或者从 C++11 开始:
std::pair<void*, void*> vpr;
...
auto fbpr = std::make_pair(static_cast<foo*>(vpr.first), static_cast<bar*>(vpr.second));
问题
有没有更简洁、更优雅或更高效的方式来进行这种铸造?
【问题讨论】:
标签: c++ pointers c++11 casting void-pointers