Форум программистов, компьютерный форум CyberForum.ru

Классы-синглтоны с зависимостями должны удаляться в определенном порядке - C++

Восстановить пароль Регистрация
 
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
21.08.2014, 20:34     Классы-синглтоны с зависимостями должны удаляться в определенном порядке #1
Здравствуйте!

Пишу классы-синглтоны с зависимостями. Храню их в статической памяти. Проблема в том, что они должны удаляться в определенном порядке - я регистрирую зависимости. Однако, когда в конце программы компилятор сам вызывает деструкторы, то, сначала разрушается объект производного класса (я наследую синглтоны от Service), и только потом я могу обработать зависимости, что не есть хорошо. Вариант с синглтоном-фениксом мне не подходит.

У меня есть следующие возможные варианты решения проблемы:
1) не хранить синглтоны в статической памяти, или хранить указатели на них
2) хранить в статической памяти что-нибудь вроде ServiceHandle, который в деструкторе будет обрабатывать зависимости и удалять "свой" синглтон.
3) использовать функцию atexit (не в смысле того, что описывал Александреску): т. к. она, по идее, вызывается ДО освобождения статической памяти, то там можно все корректно удалить, но тогда нужно будет решать проблему с двойным вызовом деструкторов, хранить дополнительные данные
И так далее, наподобие предыдущих, частично схожих идей.

Что мне делать в данном случае?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2014, 20:34     Классы-синглтоны с зависимостями должны удаляться в определенном порядке
Посмотрите здесь:

Заполнении массива в определенном порядке! C++
C++ я учусь на высшке на программиста.. какие могут быть задачи на экзамене 1й курс .2й семестр!!.. должны быть классы!!
C++ Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены и переписать новый текст в файл D
Непонятна тема (Классы содержащие другие классы, как данные члены ) C++
Вывести элементы массива в определенном порядке C++
Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы C++
C++ Классы. Задана программа.Нужно ее изменить за место переменных должны быть указатели
C++ Вывести на экран числа в определенном порядке

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
21.08.2014, 20:40     Классы-синглтоны с зависимостями должны удаляться в определенном порядке #2
Я бы тут придерживался принципа "явное лучше неявного".
Если есть иерархия объектов, которые зависят друг от друга, то это должно быть очевидно по коду создания этих объектов. Например, если какой-либо объект требует наличия другого - он может либо сам создать его, либо получить в конструктор shared_ptr на требуемый объект.

Синглтоны не слишком отличаются от глобальных переменных и отслеживать такие зависимости сложнее.
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
21.08.2014, 20:50  [ТС]     Классы-синглтоны с зависимостями должны удаляться в определенном порядке #3
Ну, я собираю зависимости примерно так: class UIManager : Service<UIManager, std::tuple<EpicLogger, GraphicsManager>>.
Проблема в том, что я собираюсь сделать разрешение зависимостей полностью независимым от реализации самих синглтонов.
Yandex
Объявления
21.08.2014, 20:50     Классы-синглтоны с зависимостями должны удаляться в определенном порядке
Ответ Создать тему
Опции темы

Текущее время: 17:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru