2012-11-27 43 views
0

我的問題是如何將智能指針分配給其他人?我不知道如何繞過臨時變量?boost shared_ptr拷貝問題

typedef boost::asio::ip::tcp::socket   TBoostSocket; 
typedef boost::shared_ptr<TBoostSocket>  TSocket; 

TSocket createSocket(const IpcNode::TPath& a_path) { 

    TSocket socket(new TBoostSocket(*this->getIoservice())); 
    return socket; 

} 

//在另一個函數

TSocket result(); 

result= createSocket(a_path); 

//編譯器輸出
錯誤:服用的地址臨時[-fpermissive]

41:錯誤:的功能分配「IPC :: TcpServices :: TSocket IPC :: result() 無法在作業中將'TSocket * {aka boost :: shared_ptr> *}'轉換爲'TSocket(){aka boost :: shared_ptr>()}'

我知道我缺少明顯的東西我可以看到它現在

回答

2

以下聲明的函數(即不帶任何參數和返回TSocket):

TSocket result(); 

將其更改爲:

TSocket result; 
+0

謝謝我看不到樹的木頭 – gda2004

+0

這是一個非常容易忽略的非常常見的問題(尤其是遇到的錯誤信息)。 – NPE