将提升shared_ptr转换为无效*,反之亦然

converting boost shared_ptr to void* and vice versa

本文关键字:无效 反之亦然 转换 ptr shared      更新时间:2023-10-16

我可以将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 fn"; }
     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来完成吗?

还有一个星号:

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