Bonjour a tous,
Je créé un paquettage de liste chainée qui utilise en interne un type Noeud privé.
On déclare donc un type Noeud et un type access à un Noeud (ptr_Noeud), pour pouvoir gérer des Noeuds suivants, précédents, etc...
Très classique jusqu'ici.
Je veux créer une fonction qui compare TOUTE une liste chainée et pas seulement deux Noeuds. Elle renverra VRAI si tous les noeuds sont identiques (même valeur).
On peut surcharger la fonction "=" qui prend comme paramètres deux ptr_Noeuds qui sont des listes (éventuellement NULL).
FUNCTION "=" (ptr_A, ptr_B : ptr_Noeud) RETURN Boolean IS ...
Et on appelle la fonction dans le programme principal :
IF ListeA = ListeB THEN ...
Quand j'écris la fonction "=" sur les types ptr_Noeud, j'ai besoin de savoir dès le début si les pointeurs sont nuls.
Pour cela je fais : IF ptr_A = NULL THEN ...
Et là j'ai un problème car comme j'ai surchargé la fonction "=", le test de comparaison me faire rentrer en récursivité dans ma propre fonction "=" surchargée...
Je cherche donc un moyen pour comparer ces références (pointeurs) sans utiliser la fonction "=" que j'ai réécrite.
Faut-il convertir ptr_A et Null en adresse ? Comment faire ?
Existe--il un moyen de forcer l'utilisation de "=" avant la surcharge ?
Comment faire (je veux conserver la fonction "=" surchargée) ?
Merci pour votre aide.
Rahan2000fr [@] free.fr
Partager