Membre d'une classe change sans raison
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:
1 2 3 4 5 6
| class Session {
public:
inline const int GetSocket() const { return sock; }
private:
int sock;
} |
Code:
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...
http://img535.imageshack.us/img535/5...ketbizarre.png
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