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

时间:2011-05-10 07:56:51

标签: c++ boost

我可以将boost shared_ptr转换为void*并转回boost::shared_ptr吗?我需要这个,因为我需要将共享指针和回调函数传递给在C中实现的计时器函数。在回调中,我需要将void*指针转换回boost:shared_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;
}

可以使用boost::shared_ptr完成吗?

2 个答案:

答案 0 :(得分:14)

再多一个星号:

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

答案 1 :(得分:3)

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