Bonjour la communaut�,
Pour utiliser le module r�seau de SFML j'ai besoin de b�cher (h�las) les pointeurs.
Apr�s quelques t�tonnements (et beaucoup d'aide de Laurent du forum SFML), j'arrive au code suivant qui compile ET qui fonctionne !
C++
sauf que :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ... // lancement du listener serveur : allo std::vector <sf::TcpSocket*> V_client; bool tousPresents(false); while(!tousPresents) { // déclaration d'un socket à affecter au prochain client qui le demande sf::TcpSocket *joueur = new sf::TcpSocket(); if (allo.accept(*joueur) == sf::Socket::Done) { selecteur.add(*joueur); V_client.push_back(joueur); } if (V_client.size() == nbJoueurs) tousPresents=true; }
c'est mal, ai-je lu par ici...
Code : S�lectionner tout - Visualiser dans une fen�tre � part std::vector <sf::TcpSocket*> V_client;Il semblerait qu'on ne code plus en C++ avec des pointeurs nus mais avec des pointeurs intelligents (le mieux, � mon sens, serait de coder sans pointeur du tout mais bon).
D�butant mais disciplin�, je tente donc de remplacer le pointeur nu par un pointeur unique_ptr. cela donne ceci (<memory> est inclus) et le compilo est r�gl� pour accepter c++11:
Comme indiqu� en commentaire, le compilo ouvre "new_allocator.h" et fini sur une erreur :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 std::vector <std::unique_ptr<sf::TcpSocket>> V_joueur; bool tousPresents(false); while(!tousPresents) { // déclaration d'un socket à affecter au prochain client qui le demande std::unique_ptr<sf::TcpSocket> joueur(new sf::TcpSocket); // <= ça le compilo n'aime pas ! :/ if (allo.accept(*joueur) == sf::Socket::Done) { selecteur.add(*joueur); V_joueur.push_back(joueur); } if (V_joueur.size() == nbJoueurs) tousPresents=true; }
Erreur �videmment incompr�hensible � mon niveau.error: use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = sf::TcpSocket; _Dp = std::default_delete<sf::TcpSocket>]'|
Par ailleurs, je me suis aussi laiss� dire que push_back et unique_ptr, ce n'�tait pas compatible...
Quelques pistes, conseils et indications de la syntaxe correcte serait donc TRES bienvenus.
Merci de m'avoir lu.
Rick.
Partager