Есть такой большой объект-"матка", который обслуживает множество других. Эти обслуживаемые объекты выдаются по запросу. Тоесть в метод GetMyObject(int nObjectID) дается ключ, и в этом методе создаётся и возвращается new MyObject(nObjectID)
По одинаковым ID нужно выдавать один и тот же объект. Тоесть, например, хранить ссылку на него в HashMap и содавать новый только если ссылки там нет. И удалять его из HashMap и из памяти, как только освобождается последний указатель.
Проблема в том, что последний указатель — это и есть ссылка из HashMap! Как бы вызывать деструктор объекта при освобождении всех указателей, кроме последнего?
Вот такая проблема.