Как я могу вызвать частный деструктор из shared_ptr?

У меня есть класс resource_manager , который поддерживает внутри std :: vector > . resource_manager - это класс друзей для ресурса . Я хочу, чтобы ресурсы создавались / удалялись только resource_manager , поэтому я сделал его конструкторы закрытыми (что нормально работает).

Однако, если я сделаю деструктор закрытым, код не будет компилироваться, потому что деструктор вызывается boost :: shared_ptr , который не является другом ресурса . Я подумываю о применении правила «не удалять клиентами», возвращая только ресурс const * из resource_manager , но почему-то меня не устраивает безопасность, которую обеспечивает этот метод ( что, если клиент каким-то образом наткнется на указатель на неконстантный?)

Помимо очевидного решения отказа от использования shared_ptr , есть ли у вас какой-либо обходной путь / лучшее решение моей проблемы?

7
задан Deduplicator 26 October 2015 в 14:11
поделиться