我的问题是如何将智能指针分配给另一个?我不知道如何绕过临时变量?
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;()}'
我知道我错过了一些显而易见的东西我现在就能看到它
答案 0 :(得分:2)
以下声明一个函数(不带参数并返回TSocket
):
TSocket result();
将其更改为:
TSocket result;