incomprehension

Le
eric
bonjour,

j ai un petit gaga que je comprend pas bien.
J ai créé une classe du type :
class Noeud {

vector<Noeud*> fils_

vector<Noeud*> getFils() { return fils_;}
}

je me construit un petit arbre, dont le noeud racine est la racine et je
veux le voir. je met NULL comme premeir pointeur si pas de fils

si j'ecris:

cout << ((racine.getFils()[0])->getFils()[0])->getFils()[0]
J'obtiens le NULL que je cherche, tout est normal.

Mais si j ecris :

ptr=&racine;
ptr = ptr->getFils()[0];
ptr = ptr->getFils()[0];
ptr = ptr->getFils()[0]; (je devrais etre au memme niveau que dans l
expression precedente il me semble)
et cout << ptr;
j obtiens pas NULL, or je devrais bien obtenir la meme chose que
precedement non ?

bonnes fetes a tous !

@+
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sylvain Togni
Le #313558

si j'ecris:

cout J'obtiens le NULL que je cherche, tout est normal.

Mais si j ecris :

ptr=&racine;
ptr = ptr->getFils()[0];
ptr = ptr->getFils()[0];
ptr = ptr->getFils()[0]; (je devrais etre au memme niveau que dans l
expression precedente il me semble)
et cout << ptr;
j obtiens pas NULL, or je devrais bien obtenir la meme chose que
precedement non ?


Les deux écritures sont équivalentes, elles contiennent trois
appels à getFils()[0] en cascade.

L'erreur doit-être ailleurs. Est-tu sûr que tous les noeuds
contiennent au moins un fils (même NULL) ? Le constructeur de
copie et l'opérateur d'affectation de la classe noeud sont-ils
bien définis (copie profonde ou déclarés private) ?

D'ailleurs, pourquoi utiliser un fils NULL ? Une feuille
pourrait être tout simple un noeud sans fils. Aussi, si les
noeuds ne sont pas polymorphes, j'utiliserai un vector<Noeud>
plutôt qu'un vector<Noeud*>.

--
Sylvain Togni

eric
Le #313525
bonjour

merci de ta réponse

L'erreur doit-être ailleurs. Est-tu sûr que tous les noeuds
contiennent au moins un fils (même NULL) ?


err a vue de nez, je pense que le problème était là...
j'ai rajouté un ajout de fils NULL et cela fonctionne ...

D'ailleurs, pourquoi utiliser un fils NULL ? Une feuille
pourrait être tout simple un noeud sans fils.


je pensais que cela serait plus ismple pour les test... (style tant que
pas NULL ...)

Aussi, si les
noeuds ne sont pas polymorphes, j'utiliserai un vector<Noeud>
plutôt qu'un vector<Noeud*>.


oui effectivement, au début, je pensait que les feuilles seraient
différents des noeuds, par la suite la feuille est devenue unnoeud
normal...
De fait il n'y a plus polymorphisme...
Par habitude, dès que j 'utilise de grosses structures, je met un
pointeur ;)

Publicité
Poster une réponse
Anonyme