Нельзя хранить ссылки в контейнере STL. Контейнеры хранят объекты, и ссылки не являются объектами (кроме того, объекты, хранящиеся в контейнере, должны быть назначаемыми, а ссылки не могут назначаться).
Вы хотите использовать карту указателей:
std::map<std::string, Node*>
Также остерегайтесь вопросов собственности. Вы должны убедиться, что объекты не уничтожены, пока каждый, у кого есть ссылка на них, не использует их. Если у вас есть объекты, используемые в нескольких местах, рассмотрите возможность использования интеллектуального указателя общего владения, такого как shared_ptr
, для управления временем жизни объекта. Ручное управление ресурсами в C ++ чревато опасностью, и его следует избегать любой ценой.