2009-11-10 1 views
1

У меня есть архитектура, которая использует шаблон посетителя для реализации ряда проходов над деревом (AST, как это бывает). В одном из проходов мне нужно связать некоторые данные с узлом (nodeX), а затем из некоторого пункта ниже получить мои данные из ссылки на nodeX. Я хочу сделать это таким образом, чтобы не продвигать реализацию посетителя/прохода в узлы дерева.Как сохранить состояние на узле шаблона посетителя?

Есть ли опрятный способ сделать эту работу?

Идеи:

  • void* на каждом узле (некрасиво, не типобезопасен)
  • hash_map<Node,Data> (не так чист, как хотелось бы, и кто им владеет?)

ответ

1

Хеш_мап звучит как лучший способ для меня. Посетитель будет владеть им.