2011-05-10 241 views
8

我可以將boost shared_ptr轉換爲void*並返回boost::shared_ptr?我需要這個,因爲我需要將共享指針和回調函數傳遞給在C中實現的定時器函數。在回調函數中,我需要將void*指針轉換回boost:shared_ptr。這樣做給了我錯誤。將boost shared_ptr轉換爲void *,反之亦然

我試過與示例程序相同。

#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完成嗎?

回答

14

只要再一個星號:

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

:)非常感謝 – punith 2011-05-10 11:22:50