Ищу умную карту

У меня есть глобальная карта для хранения умных указателей.
Другие классы получают эти указатели по ключу.

В качестве члена переменной они используют ключ использования: int USING_POINTER_KEY.

Так что я могу определить в «getGlobalPointer»: получить указатель с карты по ключу «USING_POINTER_KEY».

Оно работает! И у меня было достаточно причин хранить свои указатели таким образом. Все нормально.

Моя проблема: Как я могу научить свою глобальную карту автоматически удалять записи, которые больше не используются классами?

Я думаю с подсчетом ссылок. Но я не уверен, как …

0

Решение

Этот вид всеобъемлющей схемы — красный флаг.

Но вы можете создать пользовательский удалитель с помощью умного указателя (std::shared_ptr). Просто передайте указатель функции в качестве второго аргумента shared_ptr конструктор. Функция может удалить указатель из глобальной таблицы.

Умные указатели уже являются реализацией подсчета ссылок, поэтому вы просто хотите добавить обратный вызов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]