0

我的问题是如何将智能指针分配给另一个?我也不确定如何绕过临时变量?

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 >() }' 在赋值

我知道我遗漏了一些明显的东西,我现在就可以看到

4

1 回答 1

2

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

TSocket result();

将其更改为:

TSocket result;
于 2012-11-27T10:52:12.363 回答