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 次 |
最近记录: |