Вы можете уменьшить use_count для shared_ptr
, используя метод reset()
.
Если вы сделаете это для каждого указателя, который содержит экземпляр, последний reset()
уничтожит объект, на который он указывает.
shared_ptr<Class> myPointer1( new Class() ); //myPointer holds an instance of Class
shared_ptr<Class> myPointer2 = myPointer1; //use_count == 2
myPointer1.reset(); //use_count == 1
myPointer2.reset(); //instance of class will be destroyed
Но у вас, вероятно, есть проблема с вашим дизайном, shared_ptr должен автоматически выйти из фокуса, когда определенные объекты уничтожены или методы заканчиваются. Возможно, вам следует взглянуть на точки, где shared_ptrs по-прежнему содержит указатели на объект, и проверить, не должны ли они больше удерживать объект.