我们在某些.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
传递给我的函数?
答案 0 :(得分:1)
你必须告诉编译器你要绑定哪个 read_some
。由于它是一个模板,因此您必须在将模板参数传递给bind()
时指定模板参数。
在您的情况下,您需要http_request::read_some<boost::asio::mutable_buffers_1>
。
作为旁注,你也传递了socket对象本身错误。你传入一个指向套接字的指针,该函数需要一个引用。传入&socket
,而不是传入bind
传递boost::ref(socket)
,或者你可以使函数采用套接字指针而不是引用。