|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.06.2017, 20:52 | #1 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Синглтон Майерса и getInstance с параметром
Есть такой класс для управления соединением с БД:
Код:
Код:
Как можно возвращать ссылку, и в то же время не перезаписывать переменную? |
15.06.2017, 22:37 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Код:
|
16.06.2017, 06:10 | #3 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Статическая переменная будет инициализирована при первом вызове данной функции. Остальные вызовы никак её не поменяют. Плюс ко всему, такое создание синглтона будет потокобезопасно.
|
18.06.2017, 17:07 | #4 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Несмотря на то, что во всех примерах синглтона возвращается указатель или ссылка на сам синглтон, я могу вернуть что угодно. Могу ли я возвращать хэндл БД при вызове connect и не будет ли это нарушением паттерна?
|
19.06.2017, 12:04 | #5 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
мелочи-мелочи, а такие вещи, даже на java, в андроиде жуть че творят. Хотя казалось бы ... автоматом вся память - а нет - статик живет, пока живет ВМ, а вм живет - для ускорения запуска - и начинается свистопляска (а если вставите в дроид С++ код такой - то там ток ребут). Вообще я так делаю в хидере - тоже инит при первом использовании: Код:
Последний раз редактировалось alexzk; 19.06.2017 в 12:08. |
|
19.06.2017, 12:11 | #6 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Вот еще пример, хидер:
Код:
Где-то совсем потом: Код:
globalInstance<A>() |
19.06.2017, 12:16 | #7 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Еще для использования RAII при работе с БД можно применять std::unique_ptr с пользовательским деструктором, а для удобного для чтения создания такого указателя можно написать шаблонную функцию. Но такой указатель не будет глобальным. Что лучше: указатель или синглтон?
|
19.06.2017, 12:18 | #8 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Для чего используется inline? Темплейты по умолчанию и так inline.
|
19.06.2017, 12:20 | #9 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
У
Указатель, с кастомным удалятором. Но, кажется, unique_ptr не позволяет его задать. Тогда нужен класс-обвертка, который при удалении освободит ресурс. Напрямую хэндлы ресурса совать в указатель - очень плохая идея. |
19.06.2017, 12:21 | #10 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
По привычке. Остатки копипаста - сначало это был конкретный класс, а потом стал темплейтом.
Вобщем оно не мешает там. ...а стоп, по-моему как раз там inline нужен. Связано это с тем, как компилятор генерит статик мембер. Там комбинаций много inline + static +static static+static вобщем для уверенности, я прописал как мне нада. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Синглтон и паттерн. Что это такое и с чем его едят? (C#)) | max_prorok | Общие вопросы по программированию, компьютерный форум | 21 | 22.03.2016 14:59 |
Запрос с параметром | Claster | Помощь студентам | 0 | 11.06.2012 11:44 |
Синглтон. Исключение при вызове метода через глобальную точку доступа. | clions | C# (си шарп) | 3 | 13.04.2012 21:09 |
Цикл с параметром | Гузеля | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.03.2012 20:59 |
Синглтон | megachuhancer | Общие вопросы Delphi | 0 | 11.05.2010 13:23 |