Humm ok. Du coup je dois utiliser les pointeurs intelligents ?
Comment le mettre en œuvre dans mon cas ?
Merci.
Version imprimable
Humm ok. Du coup je dois utiliser les pointeurs intelligents ?
Comment le mettre en œuvre dans mon cas ?
Merci.
Ok.
Donc je dois faire un pointeur sur ma socket ?
J'ai vraiment aucune idée de comment mettre ça en place...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class calculFrey { private: boost::shared_ptr<tcp::socket> sock; public: calculFrey(const boost::shared_ptr<tcp::socket>& s) : sock(s) { } void operator()() { cout<<"Passage dans le functore pour Frey"<<endl; boost::asio::write(*sock, boost::asio::buffer("hello !")); } };
Mais vu que je n'ai pas utilisé boost::shared_ptr depuis la nuit des temps, je ne sais pas si operator*() renvoie une référence sur l'objet contenu (si quelqu'un peut confirmer ?)Code:
1
2
3
4
5 boost::shared_ptr<tcp::socket> socket(new tcp::socket(io_service)); acceptor.accept(*socket); .. thread t(calculFrey(socket));
En attendant, c'est à ça que va ressembler le code.
Ouaip une référence.
Je suis en train de tester tout ça.
Le compilo bug pas tout va bien mais...
La ligne qui doit lancer le thread est ignorée, j'ai passé le code au débugger et il passe à l'instruction suivante, il n'exécute pasEt je comprends plus trop là...Code:thread t(calculFrey(socket));
J'ai placé des instructions avant ET après cette ligne et elles sont exécutées correctement. Ça peut venir d'où ?
Merci.
Problème résolu, je dois instancier le foncteur avant...
Merci à tous de m'avoir aidé à régler mon problème :P