[英]boost shared_ptr copy issue
my question is how do I assign the smart pointer to the other ? 我的问题是如何将智能指针分配给另一个? I am not sure how to get around the temporary variable either ?
我不知道如何绕过临时变量?
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;
}
//in another function //在另一个函数中
TSocket result();
result= createSocket(a_path);
// compiler output //编译器输出
error: taking address of temporary [-fpermissive] 错误:获取临时[-fpermissive]的地址
41: error: assignment of function 'IPC::TcpServices::TSocket IPC::result() cannot convert 'TSocket* {aka boost::shared_ptr >*}' to 'TSocket() {aka boost::shared_ptr >()}' in assignment 41:错误:赋值函数'IPC :: TcpServices :: TSocket IPC :: result()无法将'TSocket * {aka boost :: shared_ptr> *}'转换为'TSocket(){又称boost :: shared_ptr>()在任务中
I know I am missing something obvious I just can see it right now 我知道我错过了一些显而易见的东西,我现在就能看到它
The following declares a function (that takes no arguments and returns TSocket
): 下面声明一个函数(不带参数并返回
TSocket
):
TSocket result();
Change it to: 将其更改为:
TSocket result;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.