2012-11-27 36 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