C++/Boost:将成员函数作为参数传递给Boost::bind 我对C++很陌生,所以请不要评判我:-)

C++/Boost:将成员函数作为参数传递给Boost::bind 我对C++很陌生,所以请不要评判我:-),c++,boost,C++,Boost,我有一个名为connection的类,它包括以下方法: void connection::handle_connect(const boost::system::error_code& err) { if (!err) { boost::asio::async_write(socket_, request_, boost::bind(&connection::handle_write_request,

我有一个名为
connection
的类,它包括以下方法:

    void connection::handle_connect(const boost::system::error_code& err) {
        if (!err) {
            boost::asio::async_write(socket_, request_,
                boost::bind(&connection::handle_write_request, this,
                boost::asio::placeholders::error, &connection::handle_read_status_line));
        } else {
            std::cout << "Error in handle_connect: " << err.message() << "\n";
        }
    }

    void connection::handle_write_request(const boost::system::error_code& err, boost::function<void(const boost::system::error_code&)> callback) {
        if (!err) {
            boost::asio::async_read_until(socket_, response_, 0,
                boost::bind(&callback, this,
                boost::asio::placeholders::error));
        } else {
            std::cout << "Error in handle_write_request: " << err.message() << "\n";
        }
    }

    void connection::handle_read_status_line(const boost::system::error_code& err) {
        if (!err) {
            std::istream response_stream(&response_);
            std::string response;
            std::getline(response_stream, response);
            std::cout << "Response: " << response << std::endl;
        } else {
            std::cout << "Error in handle_read_status_line: " << err << "\n";
        }
    }

我应该如何正确地传递成员函数的地址?如果有任何建议,我将不胜感激

要绑定类的成员函数,请执行以下操作:

boost::bind(&SomeClass::SomeMemberFunc, this, params...);

在您的例子中,
callback
已经是一个函子,所以请尝试
boost::bind(callback,this,)

这些错误对应于哪些行?我认为首先是boost::bind。在那个地方,您必须包装&connection::handle\u read\u status\u行。可能这一行会导致错误:-boost::bind(&callback,…)因为-bind(f,…)的使用不当。bind(f,a1,a2,…,aN)表单会导致自动识别f的类型。它不适用于任意函数对象;f必须是函数或成员函数指针。
boost::bind(&SomeClass::SomeMemberFunc, this, params...);