库要求将二进制数据共享为 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);
最佳答案
你的做法是错误的。您的问题不是“我需要将 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*
请注意,此创建的哑指针不参与共享所有权方案,因此您必须注意确保对象的生命周期持续到您需要的时间。
关于c++11 - 将 std::shared_ptr<T> 转换为 void*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39044067/