Salut à tous ,
Voici la hiérarchie : Atelier contient Stations ( une liste ) , liste contient un pointeur vers un Conteneur et un Operateur. L'affichage d'atelier se fait en parcourant chaque station et demandant a chacune de s'afficher, l'affichage de station affiche l'id du conteneur et de l'opérateur, ou "vide" si les pointeurs sont null.
Problématique : J'aimerai pouvoir affecter des conteneurs et opérateur a une station depuis atelier.
Code :
- bool Atelier::affecterConteneurEtOperateurAStation(Conteneur& c , Operateur& o , Station& s)
- {
- // on déplace le conteneur
- this->addConteneur(c , s) ;
- this->ze->freeConteneur(c) ;
- // on déplace l'operateur
- this->addOperateur(o , s) ;
- this->zr->freeOperateur(o) ;
- return true ;
- }
|
Je vais mettre uniquement les code lié a l'ajout d'un conteneur , car le probleme est sans doute lememe pour les deux objets, et le free marche.
Code :
- bool Atelier::addConteneur(Conteneur& c , Station& s)
- {
- list<Station>::iterator it = this->stations.begin() ;
- for(it ; it!= this->stations.end() ; it++ )
- {
- if(it->id == s.id)
- {
- return s.addConteneur(c);
- }
- }
- return false ;
- }
|
Code :
- bool Station::addConteneur(Conteneur& c)
- {
- if (this->conteneurCourant == NULL)
- {
- this->conteneurCourant = &c ;
- return true ;
- }
- return false ;
- }
|
Bon, a priori rien de bien compliqué, et pourant quand je demande a la fin de tout cela , depuis le main, de m'afficher le contenu de l'atelier, il parcours chaque station et verifie que leur pointeur ne soient pas null pour m'afficher leur conteneurs/Operateurs . Et il me dit "Vide", considerant que ma station conserve ses pointeurs a null. Je comprends pas.
j'ai voulu débuggé :
A la fin de la méthode Atelier::affecterConteneurEtOperateurAStation
On a bien la station a l'@0x28fe7c qui passe son pointeur de conteneur de 0x0 à 0x28fe08.
(dans les deux méthodes par lesquelles elle passe, l'@ de la station reste la même) .
Quand on revient dans le main, la station passée en paramètre affecterConteneurEtOperateurAStation(....) a pour pointeur sur conteneur 0x28fe08 et malgré tout , le test != NULL reste false a l'affichage.
Je ne trouve pas de solutions.Dites moi si vous oui
Merci encore.