Учитывая следующий классповышение :: связать композицию внутри io_service :: после функции
class task_counter
{
public:
task_counter(short, boost::asio::io_service&);
~task_counter(void);
template<typename CompletionHandler>
void exec_task(CompletionHandler handler)
{
grant_access();
io_.post(boost::bind(&task_counter::exec_and_decrease_counter<CompletionHandler>, this, handler));
}
template<typename CompletionHandler>
void exec_and_decrease_counter(CompletionHandler handler)
{
handler();
decrease_counter();
}
private:
....
}
Метод exec_task вызывается другим классом таким образом:
tc_msg->exec_task(boost::bind(&message_receiver::handle_msg, this, msg));
Компиляция терпит неудачу с указанием «недопустимое использование void expression "в bind.hpp Я выясняю, что проблема должна быть внутри функции io_post, аргумент которой представляет собой состав двух разных объектов boost :: bind. Но я не смог глубоко понять настоящую проблему.
Что такое определение 'message_receiver :: handle_msg'? – ildjarn
Привет, Это метод с этой сигнатурой: 'void message_receiver :: handle_msg (const qpid :: client :: Message & msg)' – fremmi