将std :: shared_ptr <t>转换为void *

时间:2016-08-19 16:44:24

标签: c++11

库需要将二进制数据共享为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);

1 个答案:

答案 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*

请注意,此创建的哑指针不参与共享所有权方案,因此您必须注意确保对象的生命周期持续,只要您需要它。