Я работаю над приложением C ++, в котором есть некоторые объекты контроллера, которые регулярно создаются и уничтожаются (используя new). Необходимо, чтобы эти контроллеры зарегистрировались в другом объекте (назовем его controllerSupervisor) и отменили регистрацию при разрушении.
Проблема, с которой я сейчас сталкиваюсь, возникает при выходе из приложения: так как порядок уничтожения не является детерминированным, бывает так, что один экземпляр controllerSupervisor разрушается до (некоторых) самих контроллеров, и когда они вызывают незарегистрированный метод в своем деструкторе, они делают это на уже разрушенном объекте.
Единственная идея, которую я выдвинул (имея большую простуду, так что это может не иметь большого значения), заключается не в том, чтобы controllerSupervisor являлся глобальной переменной в стеке, а скорее в куче (т.е. используя new). Однако в этом случае у меня нет места, чтобы удалить его (это все в сторонних библиотеках).
Будем благодарны за любые подсказки / предложения о возможных вариантах.