【问题标题】:boost shared_ptr copy issue提升 shared_ptr 复制问题
【发布时间】:2012-11-27 10:49:19
【问题描述】:

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

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 >()}”

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

【问题讨论】:

    标签: c++ boost-asio shared-ptr


    【解决方案1】:

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

    TSocket result();
    

    改成:

    TSocket result;
    

    【讨论】:

    • 谢谢我看不到树木的树木
    • 这是一个非常容易被忽视的常见问题(尤其是容易得到的错误信息)。
    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 2023-03-03
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多