2009-11-10 6 views
1

J'ai une architecture qui utilise le modèle de visiteur pour mettre en œuvre un certain nombre de passages sur un arbre (un AST, comme cela arrive). Dans l'un des passages, j'ai besoin d'associer des données avec un nœud (nodeX) et puis à partir d'un certain point ci-dessous, j'obtiens mes données à partir d'une référence au nodeX. Je veux le faire d'une manière qui ne pousse pas l'implémentation du visiteur/passe dans les nœuds d'arbre.Comment stocker l'état sur un nœud pour un modèle de visiteur?

Existe-t-il une façon simple de faire fonctionner cela?

Idées:

  • void* sur chaque nœud (laid, pas SÛR type)
  • hash_map<Node,Data> (pas aussi propre que je voudrais, et qui en est propriétaire?)

Répondre

1

Le hash_map semble être le meilleur moyen pour moi. Le visiteur le posséderait.