【发布时间】:2012-07-26 10:29:05
【问题描述】:
我有以下几行:
typedef boost::shared_ptr<A> A_SPtr;
void *f(void* var){ ...
我希望能够做这样的事情:
A_SPtr instance = (void*)(var);
我该怎么做? 另外,我怎样才能将含义从 shared_ptr 转换为 void*?
【问题讨论】:
-
智能指针的目的是拥有堆分配的内存。例如
A_SPtr instance = new A(); -
从 shared_ptr 到 void - void* ptr = s_ptr.get();
-
@AJG85 指针是在函数外部分配的,我想将它作为 void* 传递,然后再将其转回函数内部的 shared_ptr
-
您的实际用例是什么?有几种不同的方法可以做到这一点(将指向共享指针的指针转换为
void *,使用shared_from_this等),正确的方法取决于您要实现的目标。 -
@David Schwartz 这个方法 f 是一个线程的例程(使用 pthread),它以 void* 的形式接收一个共享指针,然后我想将它转换回共享指针,以便使用其类的方法
标签: c++ boost casting shared-ptr void-pointers