Если у вашего менеджера есть shared_ptr
для вашего объекта, то он владеет им.
Таким образом, ваш объект не должен быть уничтожен, так как Менеджер все еще имеет ссылку на него.
Вы можете передать слабый указатель менеджеру, но тогда менеджер должен проверить, что указатель все еще действителен, и удалить его, если нет.
Ваш вопрос интересен, но ваше дело вызвано неправильным представлением. Пока объект владеет ссылкой на ваш объект, целью shared_ptr является то, что он не будет уничтожен. Для вызова деструктора вы должны были вручную вызвать delete для указателя, что является плохим поведением при работе с shared_ptr.
Просто определите, кому действительно принадлежит объект, и передайте им shared_ptr. Если часть кода иногда нуждается в вашем объекте - если он существует - тогда присвойте ему слабый_птр.