gpt4 book ai didi

c++ - Boost::Bind noncopyable error with shared_ptr

转载 作者:行者123 更新时间:2023-11-30 00:39:40 26 4
gpt4 key购买 nike

我正在尝试以下操作:

boost::shared_ptr< tcp::socket > socket(new tcp::socket( *io_service));

boost::bind(&function, *socket); // compiler error: noncopyable error
function(*socket); // this works fine

void
function(tcp::socket & socket)
{
//do work
}

为什么我在使用 boost::bind 时会出现错误?

我后来尝试了以下方法:

boost::shared_ptr< tcp::socket > socket(new tcp::socket( *io_service));
boost::bind(&function, socket); //this works fine now
void function(boost::shared_ptr< tcp::socket > socket)
{
asio::read_until(&socket, buffer, "end"); // compiler error: says i am passing an invalid argument
}

为什么现在不起作用?

我知道我缺乏 C/C++ 编程的基础知识。

如果任何人都可以提供一个链接来帮助解决此类问题,那就太好了。

最佳答案

您正在尝试复制一个不可复制的对象。将其包装在一个 boost::ref 对象中以将其作为引用:

boost::bind(&function, boost::ref(*socket));

关于c++ - Boost::Bind noncopyable error with shared_ptr <tcp::socket>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com