库需要将二进制数据共享为void *
。
要共享的数据以shared_ptr<T>
提供。
有没有办法将shared_ptr<T>
投放到void *
?
PS:静态强制转换不起作用:
error: invalid static_cast from type ‘std::shared_ptr<DataPacket>’ to type ‘void*’
static_cast<void *>(binData);
答案 0 :(得分:4)
你错了。你的问题不是“我需要将shared_ptr<T>
解释为void*
” - 你的问题是“我有一个指向对象的智能指针,我需要一个指向该对象的哑指针”。
shared_ptr<T>
的功能完全 。
shared_ptr<T> smart;
// ... some code here points smart at an object ...
T *dumb1 = smart.get(); // creates a dumb pointer to the object managed by smart
void *dumb2 = smart.get(); // dumb pointers automatically convert to void*
请注意,此创建的哑指针不参与共享所有权方案,因此您必须注意确保对象的生命周期持续,只要您需要它。