![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
maxvanceffer |
![]()
Сообщение
#1
|
![]() Студент ![]() Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ребято кто подскажет как правильно реализовать паттерн сишлтон в кт ? Потому что пыталься разными способами из гугла и все выводили разного рода ошбики или ещё что то ...
Подскажите может в кт есть в классе глобал что то или в какую сторону копать ссылки , спс! |
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Глянь тему: Шаблон проектирования Singleton (одиночка), подбираю подходящий для моей задачи.
Или просто поиск: Singleton |
|
|
rnd |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 54 Регистрация: 22.7.2009 Пользователь №: 930 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
сообс-но qt и сингелтон - это ортогональыне понятия, т.е. никак не связаны. Есть несколько основных способов реализации (подробнее в книгах Майерса, Александреску и Уилсона). А вообще сингелтон - довольно опасный паттерн, у которого есть нетривиальные моменты. Если есть возможность - лучше обойтись не глобальным доступом к объекту, а передачей указателя во все необходимый функции.
Если сингелтонов несколько - установить явный порядок создания\уничтожения. |
|
|
maxvanceffer |
![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да я понемаю его опасность. Но задача такова что есть много классов окан где нужна информация из этого синглтона. То есть класс синглтон в моей программе это класс данных.
Тут мне он и нужен. Чтобы эта инфа была видна во всех классах. И все классы знали что и где лежит. Почему я прикрутил к этому вопросу кт , это что у кт есть класс глобал, в котором много чего. И я о нём я знаю очень мало. Только то что пока использовал. И думал может в кт глобал есть что то подобное уже готовое ! Сообщение отредактировал maxvanceffer - 27.9.2009, 14:47 |
|
|
ufna |
![]()
Сообщение
#5
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Может быть, поможет. Я сам сделал вот так:
a_singleton.h
Соответсвенно, нужный класс создается: myclass.h
myclass.cpp
Соответственно, доступ по MY_CLASS_OBJECT. Сообщение отредактировал ufna - 27.9.2009, 15:15 |
|
|
maxvanceffer |
![]()
Сообщение
#6
|
![]() Студент ![]() Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ух как закрученно у тебя )))
|
|
|
maxvanceffer |
![]()
Сообщение
#7
|
![]() Студент ![]() Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Так ребята сделал по книжке Э.Гамма ,Р.Хелм, Р.Джонсон и есть ощибка от компилятора :
c:/Qt/2009.03/qt/include/QtCore/../../src/corelib/tools/qlist.h:(.text$_ZN4user8INSTANSEEv[user::INSTANSE:-1: error: undefined reference to `user::instance' Но я заметил одну вещь которую я возможно не понял и не сделал это во всех примерах есть такая вешь как : Singleton* Singletone::_instance = 0; Вот что это и где ето нужно обьевлять ? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
ufna, а почему ты конструктор класса ни в шаблоннном классе ни в наследнике не прячешь?
Одна из особенностей одиночек - недоступность трёх членов: конструктор, конструктор копирования, оператор присваивания. |
|
|
BRE |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Но я заметил одну вещь которую я возможно не понял и не сделал это во всех примерах есть такая вешь как : Singleton* Singletone::_instance = 0; Вот что это и где ето нужно обьевлять ? Это нужно писать в файле реализации. Это определение самой статической переменной. ufna, а почему ты конструктор класса ни в шаблоннном классе ни в наследнике не прячешь? Одна из особенностей одиночек - недоступность трёх членов: конструктор, конструктор копирования, оператор присваивания. Да это не совсем singleton и его по другому не создать. |
|
|
ufna |
![]()
Сообщение
#10
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
когда этот класс делал, о синглетонах не знал. Потому сделал то, что мне было нужно - т.е. простой доступ к единому инстансу класса, причем если вдруг создаю где-то еще такое, то узнаю точно.
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 6.12.2023, 0:50 |