преобразование boost shared_ptr в void * и наоборот

Могу ли я преобразовать 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 ?

8
задан Lightness Races with Monica 10 May 2011 в 08:04
поделиться