Russian Qt Forum
Май 21, 2024, 08:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 ... 6   Вниз
  Печать  
Автор Тема: Protected вызов сигналов в Boost.Signals2  (Прочитано 33875 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Октябрь 16, 2015, 18:05 »

вы бы стали использовать такой вариант в production в большом проекте? Какие плюсы и минусы видите?
В большом проекте давно решено какие слот/сигнал юзать, даже попытки пересмотра этого решения будут стоить очень дорого. Поэтому не надо парить про мифическую защиту, скажите просто "хочу попробовать на бусте" - в этом нет ничего плохого  Улыбающийся
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #16 : Октябрь 16, 2015, 18:15 »

Нет, ибо чукча - не всегда писатель, но иногда и читатель Улыбающийся
Господи, а что плохо читается в этом? Улыбающийся
Код
C++ (Qt)
DEF_SIGNAL( update, void() )
 


Ненативно Улыбающийся

Это мы с вами сейчас понимаем, о чем идет речь, а Раджапраштану из Бангалора может стать не по себе Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #17 : Октябрь 16, 2015, 18:22 »

Просто чтобы понять... Вы хотите предотвратить взлом системы?

Это к вопросу инкапсуляции, и необходимости Приватных методов, обсуждение которых было таким бурным Улыбающийся. А может и правда, чего нам скрывать? И дать возможность сигналить от нашего имени всем, кому не лень Улыбающийся.

Вообще можно, но из-за двух методов connect/disconnect может и не стоит..

Но как вариант:
...

Этот вариант мне нравится значительно больше. Хотя я не фанат дружбы friend. Кстати, почему не стоит? И как тогда стоит? Улыбающийся

В большом проекте давно решено какие слот/сигнал юзать, даже попытки пересмотра этого решения будут стоить очень дорого. Поэтому не надо парить про мифическую защиту, скажите просто "хочу попробовать на бусте" - в этом нет ничего плохого  Улыбающийся
Я интереса "хочу попробовать на бусте" вроде как изначально и не скрывал Улыбающийся. Нужна эта "мифическая защита" или нет, меня тоже интересует, и мнения по этому поводу. А так же есть ли такая система сигнал-слот, которая отвечает канонам ООП.
Записан

Пока сам не сделаешь...
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #18 : Октябрь 16, 2015, 18:33 »

Ненативно Улыбающийся

Это мы с вами сейчас понимаем, о чем идет речь, а Раджапраштану из Бангалора может стать не по себе Улыбающийся
Ну конечно, Q_OBJECT нативненько, а это не нативненько. Улыбающийся
Все документируется и даже последний индус все поймет.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #19 : Октябрь 16, 2015, 19:03 »

А так же есть ли такая система сигнал-слот, которая отвечает канонам ООП.
До введения нового формата коннекта отвечала Qtшная. Улыбающийся
Мне кажется, что на чистом С++ без moc такое сделать будет не легко, если вообще возможно.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #20 : Октябрь 16, 2015, 19:24 »

Цитировать
Кстати, почему не стоит? И как тогда стоит?
Ну не знаю) У меня нет универсального рецепта) Это уже вы сами решайте)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #21 : Октябрь 16, 2015, 19:35 »

До введения нового формата коннекта отвечала Qtшная. Улыбающийся
Мне кажется, что на чистом С++ без moc такое сделать будет не легко, если вообще возможно.

Ну не знаю) У меня нет универсального рецепта) Это уже вы сами решайте)

Хорошо. Тогда акцент на то, нужно ли вообще вызов сигналов прятать? Или это желание из разряда: "Ишь чего захотел!"? Улыбающийся Или, если с этим прятаньем так много возни и трудно реализовать, то и фиг с ней, инкапсуляцией? Улыбающийся Это же сигналы, их в здравом разуме никто же не будет снаружи без причины вызывать.
Записан

Пока сам не сделаешь...
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #22 : Октябрь 16, 2015, 19:38 »

Это же сигналы, их в здравом разуме никто же не будет снаружи без причины вызывать.
this.

Защита в С++ сделана как защита от ошибок, а не как защита от злоумышленника. Если кому-то понадобиться, то он легко сможет вызывать и приватные методы. Улыбающийся
Записан
Bepec
Гость
« Ответ #23 : Октябрь 16, 2015, 19:42 »

При желании можно просто не выдавать указатель на объект с сигналами. Тогда никто его и трогать не будет.
Хотя как правильно заметили, при желании можно вообще откуда угодно вызвать Веселый
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #24 : Октябрь 16, 2015, 19:55 »

Защита в С++ сделана как защита от ошибок, а не как защита от злоумышленника. Если кому-то понадобиться, то он легко сможет вызывать и приватные методы. Улыбающийся

Со злоумышленниками понятно, от них не защитишься. А как быть с не очень опытными разработчиками, или теми, кто "сделаю щас быстренько, тут проще самому сигнал вызвать, чем ждать пока он появится"? Следить и по рукам бить? Или это слишком фантастический сценарий: неправильный вызов сигнала, и об этом не стоит беспокоиться? Улыбающийся

При желании можно просто не выдавать указатель на объект с сигналами. Тогда никто его и трогать не будет.
Хотя как правильно заметили, при желании можно вообще откуда угодно вызвать Веселый

Если не давать указатель, то и подключиться к нему никто не сможет Улыбающийся. Толку от такого объекта с его сигналами Улыбающийся.

Я так понимаю, что в конечном итоге всё сводится к порядочности и разумности разработчиков Веселый.
Записан

Пока сам не сделаешь...
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #25 : Октябрь 16, 2015, 19:59 »

Со злоумышленниками понятно, от них не защитишься. А как быть с не очень опытными разработчиками, или теми, кто "сделаю щас быстренько, тут проще самому сигнал вызвать, чем ждать пока он появится"? Следить и по рукам бить? Или это слишком фантастический сценарий: неправильный вызов сигнала, и об этом не стоит беспокоиться? Улыбающийся
Сначала всем сказать, что эмитить сигнал может класс, его содержащий, а потом следить и с чистой совестью бить по рукам. Улыбающийся
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #26 : Октябрь 16, 2015, 23:13 »

Сначала всем сказать, что эмитить сигнал может класс, его содержащий, а потом следить и с чистой совестью бить по рукам. Улыбающийся

+1

Хорошо. Тогда акцент на то, нужно ли вообще вызов сигналов прятать? Или это желание из разряда: "Ишь чего захотел!"? Улыбающийся Или, если с этим прятаньем так много возни и трудно реализовать, то и фиг с ней, инкапсуляцией? Улыбающийся Это же сигналы, их в здравом разуме никто же не будет снаружи без причины вызывать.

Здравый смысл никто не отменял. Если человек будет пытаться сделать подобное - ССЗБ. Тем более, неопытный. Это ж еще ему до этого додуматься надо - вызвать эмит сигнала от имени левого класса Улыбающийся
« Последнее редактирование: Октябрь 16, 2015, 23:16 от Racheengel » Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Bepec
Гость
« Ответ #27 : Октябрь 17, 2015, 01:08 »

Не отнимайте у юных и убогих возможность выстрелить себе в голову Веселый
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #28 : Октябрь 17, 2015, 02:22 »

Не отнимайте у юных и убогих возможность выстрелить себе в голову Веселый

Ладно бы себе, они ж и другим отстрелить головы могут  Веселый.
Записан

Пока сам не сделаешь...
Bepec
Гость
« Ответ #29 : Октябрь 17, 2015, 10:57 »

До сих пор в упор не понимаю, что вам мешает нужные вам сигналы вывести на интерфейсный класс, а свой спрятать внутри. И фиг кто подцепится.
Т.е. пробросить нужные сигналы через интерфейсный, а внутренние не проявлять. И получаем ваши хотелки - класс с сигналами внутри (которые никто не может вызвать, ибо нет доступа к указателю на класс) и с сигналами проброшенными через интерфейсный класс, которые только и сможет вызывать и цеплять программист.

PS это же простое использование инкапсуляции - не хошь чтобы рылись в нутрях - дай только интерфейсный класс Веселый
« Последнее редактирование: Октябрь 17, 2015, 11:00 от Bepec » Записан
Страниц: 1 [2] 3 4 ... 6   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 22.