Заранее извините за длинное объяснение!
У меня есть приложение C ++, которое использует hash_map
для хранения дерева информации, которое было проанализировано из текстового файла.Значения на карте являются дочерними hash_map
или string
.Эти значения были проанализированы из текстового файла и затем сохранены в карте.
Я хотел избежать отправки строк и карт в виде копии в функцию назначения хэш-карты, поэтому, когда файл был проанализирован, я создалуказатель на new string()
или new hash_map()
и сохранение значения на карте в виде «произвольных» данных (указатель на пустоту).
Однако это создает довольно большую проблему, когда дело доходит до очистки.вверх, поскольку удаление пустоты ведет себя не так, как хотелось бы (и это имеет смысл).Я искал простое решение, просто создав класс Object
и сделав дочерние классы с именами StringObj
и HashMap
, в которых хранятся их соответствующие данные, и был вызван соответствующий деструктор, поскольку тип значения hash_map
был изменен науказатель на Object
.
Есть ли более простой способ решить эту проблему?Я посмотрел на динамическое приведение и подумал, что оно может работать хорошо, так как я могу поймать исключение из неудачного приведения и обработать его соответствующим образом, но я не могу не чувствовать, что может быть более простое решение или что я переборщилнемного усложнить.
Предложения?
Заранее спасибо, Jengerer