C++ 将boost shared_ptr转换为void*,反之亦然

C++ 将boost shared_ptr转换为void*,反之亦然,c++,boost,C++,Boost,我是否可以将boost shared_ptr转换为void*并返回到boost::shared_ptr?我之所以需要它,是因为我需要将共享指针和回调函数传递给用C实现的计时器函数。在回调中,我需要将void*指针转换回boost:shared\u ptr。这样做给了我错误 我用一个示例程序尝试了同样的方法 #include <iostream> #include <boost/shared_ptr.hpp> using namespace std; class A {

我是否可以将
boost shared_ptr
转换为
void*
并返回到
boost::shared_ptr
?我之所以需要它,是因为我需要将共享指针和回调函数传递给用C实现的计时器函数。在回调中,我需要将
void*
指针转换回
boost:shared\u ptr
。这样做给了我错误

我用一个示例程序尝试了同样的方法

#include <iostream>
#include <boost/shared_ptr.hpp>
using namespace std;

class A
{

public:

    void f1() { cout<<"function f\n"; }
     inx aa;

private:
};

void f2 (void *arg) {

    boost::shared_ptr<A> b =  ( boost::shared_ptr<A> *)(arg);  //How to do this
}

int main ()
{
  boost::shared_ptr<A> a (new A());
  //void * ptr = (void *) &a;
  f2( (&a));

  return 0;
}
#包括
#包括
使用名称空间std;
甲级
{
公众:
void f1(){cout
boost::shared_ptr*b=(boost::shared_ptr*)(arg);

只需再加一个星号:

boost::shared_ptr<A> b = *(boost::shared_ptr<A>*)(arg);
boost::shared_ptr b=*(boost::shared_ptr*)(arg);
boost::shared_ptr<A> b = *(boost::shared_ptr<A>*)(arg);