我们在.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::bufferboost::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/

10-11 22:00
查看更多