![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
ViGOur |
![]()
Сообщение
#1
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Подумалось мне тут, что если взять типизированный синглтон:
который создает-возвращает указатель на класс типа T, то при вызове: вызываться декремент счетчика ссылок у нас не будет и его нужно вызывать в ручную, что чревато ошибками!Следовательно нужно создать некий класс обертку, который открыто унаследован от класса T и закрыто от нашего типизированного синглтона, а в нем уже переопределить operator delete, в котором собственно и вызывать наш CTypedSingleton<T>::free(); Что я и сделал в коде ниже: собственно сам код
Что вы скажите? |
|
|
![]() |
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
А тогда как за нимим следить проще чтобы не плодить?
|
|
|
lanz |
![]()
Сообщение
#3
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
А тогда как за нимим следить проще чтобы не плодить? Сделать один синглтон(а лучше просто класс), который будет их плодить и владеть ими, по запросу либо возвращать уже созданный, либо создавать новый. При этом можно приделать счетчик ссылок, но мне кажется это не очень хорошо - заставлять пользователей синглтона удалять его/их (это получается уже фабрика а не синглтон). Цитата Думается мне, что не правильно, когда к закрытым счетчикам класса, которые инкрементируются-декрементируются в двух его методах, имеют доступ все кому не лень сделать дочерний класс! Кому очень хочется, тот и #define private public сделает, его не остановить ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 28.6.2025, 10:43 |