提问者:小点点

为什么我不能传递对unique_ptr的引用?


我有一个向量std::unique_ptr; 我想把这个向量中的unique_ptr的引用传递给另一个函数:

std::vector<std::unique_ptr<k_ctrl_t>> _kitchens;

    for (int i = 0; i < (int)_kitchens.size(); i++)
    {
        if (FD_ISSET(_kitchens[i]->socket, &this->_readfds))
        {
            handleKitchenRet(std::cref<std::unique_ptr<k_ctrl_t>>(_kitchens[i]));
        }
    }

void Reception::handleKitchenRet(std::unique_ptr<k_ctrl_t> kitch)
{
...
}

但这不起作用,我怎么能那样做呢?

错误消息:error:use of deleted function'std::unique_ptr<_tp,_dp>::unique_ptr(const std::unique_ptr<_tp,_dp>&) [with_tp=kitchen_control_s;_dp=std::default_delete]'169句柄kitchenret(std::ref(_kitchens[i]));


共1个答案

匿名用户

void receiver::HandleKitchenRet(std::unique_ptrkitch)按值获取unique_ptr。 若要引用它,请将签名更改为void receiver::handleKitchenRet(std::unique_ptr&kitch)