提升shared_ptr复制问题

时间:2012-11-27 10:49:20

标签: c++ boost-asio 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&gt; *}'转换为'TSocket(){又名为boost :: shared_ptr&gt;()}'

我知道我错过了一些显而易见的东西我现在就能看到它

1 个答案:

答案 0 :(得分:2)

以下声明一个函数(不带参数并返回TSocket):

TSocket result();

将其更改为:

TSocket result;