Bonjour,

Lorsque je connecte 3 clients, ou plus, ma classe qui correspond a un client change un de ses membre sans aucune raison
Pour faire court,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
class Session {
        public:
                inline const int GetSocket() const { return sock; }
        private:
                int sock;
}
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
17
18
19
20
21
22
23
24
25
 
//[... plus de code]
        ConnectedClients = Collection->AllSessions(); // copie par reference des clients
// de type: std::map<int, Session*>
 
        if(Collection->Count() == 3)
        {
            std::cout << "I have now 3 clients connected, let's echo their socket number !"<<std::endl;
            ConnectedClients = Collection->AllSessions();
 
            for(auto itr = ConnectedClients.begin(); itr != ConnectedClients.end(); ++itr)
            {
                Target = itr->second; // de type Session*
                sock = itr->first;
                std::cout << "Key: " << sock << " & Session*->sock = " << Target->GetSocket() << std::endl;
            }
        }
 
        for(auto itr = ConnectedClients.begin(); itr != ConnectedClients.end(); ++itr)
        {
            Target = itr->second;
            sock = itr->first;
            std::cout << "Loop over : " << Target->GetSocket() << std::endl;
 
//[... plus de code]
Donc voila, entre la deuxieme boucle et la troisieme, la valeur de Target->GetSocket() change, voici un screenshot pour mieux comprendre...



edit:
J'ai ajouté en plus dans le code un std::cout sur l'adresse de Target pour voir si elle ne changait pas en cours de route, non elle est toujours bonne. Donc c'est bien le int sock; qui change d'un coup... !

Evidemment, le reste du programme plante salement à cause de ca..

Si vous avez des idées, je suis preneur!
merci, nico