Yon*_*Nir 4 c++ boost casting void-pointers shared-ptr
我有这些线:
typedef boost::shared_ptr<A> A_SPtr;
void *f(void* var){ ...
Run Code Online (Sandbox Code Playgroud)
我希望能够做到这样的事情:
A_SPtr instance = (void*)(var);
Run Code Online (Sandbox Code Playgroud)
我该怎么做?另外,我怎样才能将另一种方式从shared_ptr转换为void*?
只需指向指向共享指针的指针void *.
shared_ptr到void *:
f (reinterpret_cast<void *>;(&A_SPtr));
Run Code Online (Sandbox Code Playgroud)void *回到shared_ptr:
A_SPtr instance = * reinterpret_cast(boost::shared_ptr<A>*)(var);
Run Code Online (Sandbox Code Playgroud)注意:这会将指针传递给指向线程的共享指针.如果共享指针在线程函数的生命周期中不存在,则这将不起作用 - 否则,线程将具有指向不再存在的对象(共享指针)的指针.如果您无法满足该要求,请在线程完成后将指针传递给新的 shared_ptr delete.(或boost:bind直接使用与共享指针一起使用的.)
| 归档时间: |
|
| 查看次数: |
5123 次 |
| 最近记录: |