简体   繁体   English

提升shared_ptr复制问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM