Merci Jean-Luc pour ta patience...
Mais je crois avoir compris.
Dans la class Voie, ligne 222 tu définis :
virtual bool creeCheminVers(byte identifiant, byte dir, Voie *venantDe = NULL) = 0;
Donc venantDe est un pointeur et tu l'initialises à NULL.
Également dans la class Aiguille, ligne 452, tu définis :
virtual bool creeCheminVers(byte identifiant, byte dir, Voie *venantDe = NULL);
Donc il y a des venantDe qui servent quand on est sur une voie et d'autres qui servent quand on est sur une aiguille.
En fait, ce pointeur est crée et initialisé à NULL dans tous les creeCheminVers(...), comme donnée d'entrée.
Dans la class Aiguille, ligne 441, tu définis :
Voie *mVoieSortantDroit;
Donc mVoieSortant droit est un pointeur.
Quelques lignes plus bas, ligne 458, tu lui affectes la valeur :
mVoieSortantDroit = &voie;
Là, l'affectation est claire pour moi.
Mais pour venantDe, c'est plus complexe et je ne la trouvais pas.
En fait, tu la passe avec le this ligne 295 :
if (mVoie->creeCheminVers(identifiant, dir, this))
Là, c'est pour VoieEnImpasse, mais il y en a pour tous les éléments.
Et après, effectivement, tu compares les deux pointeurs pour la TJD ligne 792 :
if (venantDe == mVoieEntrant && mVoieSortant != NULL)
Et comparer des pointeurs, c'est comme comparer les contenus.
C'est bon ?
J'ai relu la prose de Thierry et ça m'a aussi aidé.
J'avais cru comprendre ses articles, mais finalement pas complètement...
Autre chose :
On démarre par la class Voie.
class VoieEnImpasse hérite de Voie
class VoieNormale hérite de Voie
Puis class VoieMuli
class Aiguille hérite de VoieMulti
class Croisement hérite de VoieMulti
class TraverseeJonctionDouble hérite de Croisement
C'est quand même très souple