je regarde l'exemple serveur fonctionnant avec boost::asio :
http://www.boost.org/doc/libs/1_51_0...hat_server.cpp
il y a une ligne qui me pose problème :
la partie que je n'arrive pas à saisir est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 acceptor_.async_accept(new_session->socket(), boost::bind(&chat_server::handle_accept, this, new_session, boost::asio::placeholders::error));
le premier argument &chat_server::handle_accept correspond à la fonction q'uon bind (dites moi si j'ai tort : mais il s'agit bien d'une référence ? donc il appelle la fonction non pas depuis un objet mais depuis la classe ?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part boost::bind(&chat_server::handle_accept, this, new_session, boost::asio::placeholders::error)
cette fonction est défini comme tel:
moi je ne vois que deux arguments, or dans le bind il y en a trois après &chat_server::handle_accept... pourriez vous m'expliquer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void handle_accept(chat_session_ptr session, const boost::system::error_code& error) { if (!error) { session->start(); } start_accept(); }
de plus ne connaissant pas bind j'ai regardé cette page :
http://www.boost.org/doc/libs/1_51_0...bind/bind.html
prenons l'exemple :
je ne vois pas l'intérêt de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 struct F { int operator()(int a, int b) { return a - b; } bool operator()(long a, long b) { return a == b; } }; F f; int x = 104; bind<int>(f, _1, _1)(x);
au lie de
Code : Sélectionner tout - Visualiser dans une fenêtre à part bind<int>(f, _1, _1)(x);
pourriez-vous aussi m'expliquer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part bind<int>(f, x, x)();
de manière général je n'arrive pas à trouver d'exemple d'utilisation dans lequel je me dirais : « ha, ben là boost::bind va m'aider!! » auriez-vous en tête un exemple d'utilisation ?
Partager