2
考慮下面的類的boost :: 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「in bind.hpp 我發現問題應該在io_post函數中,它的參數是由兩個不同的boost :: bind對象組成的。但我無法深入解決真正的問題。
什麼是'message_receiver :: handle_msg'的定義是什麼? – ildjarn 2012-02-21 18:00:49
嗨,這是一個有這個簽名的方法:'void message_receiver :: handle_msg(const qpid :: client :: Message&msg)' – fremmi 2012-02-21 18:06:42