Как делать не надо

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а):А конструктор глобального объекта когда вызывается?
Ощущение да жа вю. Смотришь в книгу, видишь фигу. Ну перечитай ещё раз то, что у меня написано.
Romeo писал(а):Глобальная переменная инициализируется до вызова main, а CoInitialize вызывается именно в main, то есть позже.
Инициализация - это и есть вызов конструктора, если что...
Сионист писал(а):Вы ещё бейсик помяните.
С тобой просто бесполезно спорить. Ты выбираешь фразу и придираешься к ней. А то, против чего тебе нечего сказать, ты просто игнорируешь. Что такое pre-get hook ты не понимаешь просто, да?
Сионист писал(а):Явное позднее связывание dll, поставляющей ресурсы, либо возврат оболочки над указателем с перегруженными операторами присваивания и привидения, что дополнительно гарантирует перехват каждого обращения на случай, если кому то придёт в голову к целевому объекту прикрутить ещё и деинит, а потом в одной части программы вызвать его, а в другой обратиться к самому объекту.
Про dll вообще не понятно, зачем было сказано. А та оболочка, которую ты предлагаешь, среди программистов называется Proxy. Если бы GOF читал чуть дальше синглтона, то достаточно было бы сказать всего одно слово, чтобы тебя поняли. Вопрос, а зачем нужно городить Proxy, если достаточно просто отложить вызов? Да вы, батенька, простых путей не ищите, как я погляжу. А о принципе KISS не слышал? Специально расшифрую - Keep It Simple, Stupid - Сделай это проще, дурачок. Программа должна быть настолько простой, насколько это возможно. Хотя, я думаю, что придумывать изощрённые решения взамен простому и понятному механизму ты решил отнюдь не ради искусства. Всё куда проще. Ты упорно не хочешь признать, что приём годный лишь потому, что ляпнул сначала, что так делать нельзя, и теперь не можешь дать обратного хода. Скажу тебе честно, это плохая черта характера, как для программиста, так и для человека, в принципе.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

А о принципе KISS не слышал? Специально расшифрую - Keep It Simple, Stupid - Сделай это проще, дурачок. Программа должна быть настолько простой, насколько это возможно.
И что ж такого сложно я предложил? Особенно в сравнении с ловлей ссылок и указателей по всему коду.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Ты предложил написать отдельный класс и обернуть в него наш класс, вместо того, чтобы сделать функцию, возвращающую ссылку статическую переменную. Proxy нужен тогда, когда нужна дополнительная логика по замещению. А тут просто достаточно отложить создание объекта. Как по мне - отличный и простой механизм.

А "ловлю ссылок и указателей по всему коду" никто не отменяет и в случае Proxy. Но там, ко всему прочему, ещё и за вызовами операторов разыменования и операторов доступа к члену нужно будет следить. Хотя, если честно, я этот аргумент не понял. Мы сами за этим ссылками гнались. Нет в них ничего страшного.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить