2011-05-10 20 views
8

boost shared_ptr'u void*'a dönüştürebilir ve boost::shared_ptr'a dönebilir miyim? Buna ihtiyacım var çünkü paylaşılan işaretçiyi ve geri çağırma fonksiyonunu C dilinde uygulanan bir zamanlayıcı fonksiyonuna aktarmam gerekiyor. Geri aramada iseişaretçisini tekrar boost:shared_ptr'a çevirmem gerekiyor. Bunu yapmak bana hata verdi.boost shared_ptr öğesini void * 'e çevirme ve tersi

Örnek bir programda da denedim.

#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; 
} 

Bu, boost::shared_ptr ile yapılabilir mi?

cevap

14

Sadece bir tane daha yıldız:

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

:) çok teşekkürler – punith

İlgili konular