我嘗試綁定boost :: asio參數。綁定功能是結構的靜態成員:boost :: bind static function的參數
template <typename T>
struct bind_struct{
typedef boost::system::error_code error_code;
typedef boost::asio::ip::tcp::acceptor tcp_acceptor_type;
typedef std::shared_ptr<boost::asio::ip::tcp::socket> socket_type;
static void tcp_on_async_accept(error_code& er,
tcp_acceptor_type* acc,
socket_type socket){
std::cout << "ok" << std::endl;
}
static void good_function(int m){
std::cout << m << std::endl;
}
};
綁定操作:
/*Error*/
bind_struct<void>::socket_type sock;
bind_struct<void>::tcp_acceptor_type* acc;
auto fn = boost::bind(bind_struct<void>::tcp_on_async_accept,
boost::asio::placeholders::error,
acc, sock);
fn();
/*Ok*/
auto fn1 = boost::bind(bind_struct<void>::good_function,_1);
fn1(10);
什麼是一個問題嗎? Errors.
'bind()'可能會讓你困惑,因爲你試圖綁定一個沒有對象的成員函數(理論上可以,因爲成員是靜態的)。如果你將'&sock'作爲第二個參數傳遞給'bind()',是否會改變錯誤? – Chad
@Chad smart_poiter通過鏈接它是正常的? http://coliru.stacked-crooked.com/a/7615c6464bd2d488 – crastinus