Pracuję nad aplikacją C++, która wewnętrznie zawiera obiekty kontrolerów, które są regularnie tworzone i niszczone (przy użyciu nowych). Konieczne jest, aby kontrolery rejestrowały się w innym obiekcie (nazwijmy go kontrolerem nadrzędnym) i wyrejestruj się, gdy zostaną zniszczone.Wymuszenie zniszczenia czegoś ostatnio w C++
Problem, który napotykam obecnie, ma miejsce, gdy opuszczam aplikację: ponieważ kolejność destrukcji nie jest deterministyczna, zdarza się, że instancja pojedynczego kontrolera Monitora jest niszczona przed (niektórymi) z samych kontrolerów, a kiedy wywołują metoda wyrejestrowania w ich destruktorze, robią to na już zniszczonym obiekcie.
Jedyny pomysł, jaki wymyśliłem do tej pory (mający duże przeziębienie, więc to może nie oznaczać zbyt wiele) nie ma kontrolera kontrolera jako zmiennej globalnej na stosie, ale raczej na stercie (to znaczy przy użyciu nowego). Jednak w tym przypadku nie mam miejsca, aby je usunąć (wszystko to znajduje się w bibliotece innej firmy).
Wszelkie wskazówki/sugestie dotyczące możliwych opcji zostałyby docenione.
według "3rd party rodzaj biblioteki" masz na myśli, że nie piszesz "main"? –
Oznacza to, że kod kontrolera i nadzorcy znajduje się w statycznie połączonej bibliotece. Opiekun nie jest widoczny poza tą biblioteką, ale kontrolery są tworzone przez aplikację. – Steven
Jeśli utworzysz kontrolery, możesz kontrolować ich zniszczenie, prawda? – Null303