2009-01-27 8 views
0

J'ai une classe de base "Node" qui contient une liste de nœuds enfants. Le noeud définit une fonction "forEachNode" qui prend un callback en paramètre et l'appelle sur chaque noeud de la hiérarchie.Accès à un sous-ensemble (et non à un sous-arbre) d'une hiérarchie d'objets

J'ai une classe dérivée de Node - "SpecialNode" (pas vraiment un nom que je choisirais - juste un exemple!). Noeud ne sait rien à propos de SpecialNode.

Je souhaite parcourir uniquement les noeuds spéciaux. Je suis au point où SpecialNode définit un callback à passer à "forEachNode", mais je ne suis pas sûr de savoir comment appeler le callback pour SpecailNodes seulement. Aucun conseil?

Répondre

1

Vous pouvez essayer quelque chose comme:

if (dynamic_cast<SpecialNode*>(n) != NULL) { 
    do_something(); 
} 

Ou vous mettez une fonction virtuelle dans le nœud afin d'être appelé à partir de la fonction de rappel que vous pouvez mettre en œuvre différemment dans les sous-classes.

+0

Les deux sonnent bien pour moi - merci! –

Questions connexes