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

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

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

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

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

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

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

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

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

Следует дать конкретную постановку, т.е. указать, какие классы должны быть реализованы, какие должны быть в ни - C++
Задание: Перечень классов: квитанция, накладная, документ, чек; Порядок выполнения работы 1. Определить иерархию классов (в...

Вывести сообщения в определенном порядке - C++
Добрый вечер! Ребята подскажите,проблема с циклом. Есть цикл,надо вывести чтобы игрок1 и игрок2 выводились по очереди. int num; ...

Заполнении массива в определенном порядке! - C++
Здравствуйте :) нужна небольшая помощь ... немогу разобраться с массивом Задание: заполните массив 6х6 цифрами от 1 до 36 по схеме: ...

Классы. Задана программа.Нужно ее изменить за место переменных должны быть указатели - C++
Задана программа.Нужно ее изменить за место переменных должны быть указатели ии... #include <iostream> using namespace std; ...

Вывести на экран числа в определенном порядке - C++
на экран числа следующим образом (с помощью трех циклов: for, while, do) 1 2 3 … 10 1 2 3 … 10 1 2 3 … 10 1 2 3 … 10

Вывести элементы массива в определенном порядке - C++
Дан массив A размера N. Вывести его элементы в следующем порядке: A1, AN, A2, AN–1, A3, AN–2, … .

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
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>>.
Проблема в том, что я собираюсь сделать разрешение зависимостей полностью независимым от реализации самих синглтонов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2014, 20:50
Привет! Вот еще темы с ответами:

Заполнить массив символами в определенном порядке - C++
Дано целое число n. Заполнить char массив в таком порядке Например: Ввод 4 Вход ***# **##

вывести элементы матрицы в определенном порядке - C++
создать программу, которая будет выводить элементы матрицы 1 5 6 0 1 4 0 0 1 в порядке: 1,4,1,6,5,1

Вывести элементы массива в определенном порядке - C++
здраствуйте! кто может помогите пож-та или подскажите чем сможете... a)Дан массив A размера N. Вывести вначале его элементы с...

Копирование одномерного массива в определенном порядке - C++
Помогите, пожалуйста. Не могу разобраться: необходимо написать программу, которая копирует одномерный целочисленный массив в другой такой...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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