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