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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
#1

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

21.08.2014, 20:34. Просмотров 186. Ответов 2
Метки нет (Все метки)

Здравствуйте!

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

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

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

Заполнении массива в определенном порядке! C++
C++ Случайные числа в определенном диапазоне
C++ я учусь на высшке на программиста.. какие могут быть задачи на экзамене 1й курс .2й семестр!!.. должны быть классы!!
Вывести элементы массива в определенном порядке C++
Вывести элементы массива в определенном порядке C++
C++ Классы. Задана программа.Нужно ее изменить за место переменных должны быть указатели
C++ Вычислить Y при определенном значении X
C++ Вывести на экран числа в определенном порядке
Копирование одномерного массива в определенном порядке C++
Вывести сообщения в определенном порядке C++
Необходимо задать имя файла в определенном порядке C++
C++ вывести элементы матрицы в определенном порядке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
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     Классы-синглтоны с зависимостями должны удаляться в определенном порядке
Ответ Создать тему
Опции темы

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