У меня есть архитектура, которая использует шаблон посетителя для реализации ряда проходов над деревом (AST, как это бывает). В одном из проходов мне нужно связать некоторые данные с узлом (nodeX
), а затем из некоторого пункта ниже получить мои данные из ссылки на nodeX
. Я хочу сделать это таким образом, чтобы не продвигать реализацию посетителя/прохода в узлы дерева.Как сохранить состояние на узле шаблона посетителя?
Есть ли опрятный способ сделать эту работу?
Идеи:
void*
на каждом узле (некрасиво, не типобезопасен)hash_map<Node,Data>
(не так чист, как хотелось бы, и кто им владеет?)