这是我第一次在C ++中使用lambda函数,我需要传递一个值才能在lambda函数体内使用:
在上面的代码中我需要传递int参数seq_msg:
void do_connect(tcp::resolver::iterator endpoint_iterator, int seq_msg)
{
boost::asio::async_connect(socket_, endpoint_iterator, [this](boost::system::error_code ec, tcp::resolver::iterator)
{
if (!ec)
{
send_message(seq_msg);
do_read_header();
}
});
}
答案 0 :(得分:6)
我猜你应该按价值捕捉并改变:
[this]
为:
[this, seq_msg]
答案 1 :(得分:1)
您可以使用bind
void do_connect(tcp::resolver::iterator endpoint_iterator, int seq_msg)
{
auto cb = [this](boost::system::error_code ec, tcp::resolver::iterator, int seq)
{
if (!ec)
{
send_message(seq_msg);
do_read_header();
}
}
boost::asio::async_connect(socket_, endpoint_iterator, std::bind(cb, std::placeholders::_1, std::placeholders::_2, seq_msg) );
}
或者只是捕获seq_msg