У меня есть класс с именем Shape и класс ShapeStorage. Класс ShapeStorage имеет карту ...
std::map<int, Shape*> shapes;
и функция ...
Shape * ReturnShapePointer(int key)
{
Shape* shape = shapes[key];
shapes.erase(key);
return shape;
}
Моя цель - сделать так, чтобы мой основной класс создал экземпляр объекта ShapeStorage, сохранил немного Shape * на карте фигур. Затем я хочу удалить его с карты, но не удалять само значение. Я хочу, чтобы мой основной класс все еще мог получить доступ к значению.
Я попытался сделать это, и мой указатель по-прежнему возвращает правильные значения, но я боюсь, что, поскольку деструктор вызывается для Shape, когда я удаляю указатель из моей карты, так что в этот момент это просто мусорные данные.
Есть ли способ обойти это?