我们在.h文件中有一个成员函数
template <typename MutableBufferSequence>
int read_some(boost::asio::ip::tcp::socket& sock,
const MutableBufferSequence& buffers)
{
return sock.read_some(buffers);
}
我们希望在类函数之一中包含以下代码:
boost::packaged_task<int> pt(boost::bind(&http_request::read_some, this, &socket, boost::asio::buffer(buffer, buffer_size)));
这给了我87个编译器错误,并使我感到boost::bind无法以这种方式工作。我想知道如何通过
boost::asio::buffer
将boost::bind
传递给我的函数吗? 最佳答案
您必须告诉编译器您要绑定(bind)的read_some
。由于它是模板,因此必须在将其传递给bind()
时指定template参数。
在您的情况下,您需要http_request::read_some<boost::asio::mutable_buffers_1>
。
附带说明一下,您还传递了错误的套接字对象本身。您传入了一个指向套接字的指针,该函数接受了一个引用。而不是将&socket
传递给bind
,而传递boost::ref(socket)
,也可以使函数采用套接字指针而不是引用。
关于c++ - 如何在Boost绑定(bind)中使用Boost::asio::buffer(buf,size)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8016772/