Я создаю небольшую библиотеку графического интерфейса для кнопок, флажков и т. д., и в настоящее время я использую необработанные указатели для хранения объектов класса Widget в дочернем списке (
может быть родительским, а также дочерним), например std::vector Children. Lib запускает внутренний цикл, в котором, например, происходит отрисовка виджета. Если пользователь вызовет delete для объекта Widget, указатель на него станет недействительным. В деструкторе объект может отменить регистрацию от всех родителей, но не может удалить свой указатель из внутреннего буфера библиотеки для рисования (если удаление было вызвано после запуска функции рисования). Как гарантировать, что указатели во всех внутренних буферах (включая буфер отрисовки) останутся действительными или, по крайней мере, будут иметь возможность проверки нуля/пустого значения?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... ui-project