Russian Qt Forum
Ноябрь 22, 2024, 23:29
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
С/C++
>
Protected вызов сигналов в Boost.Signals2
Страниц:
1
[
2
]
3
4
...
6
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Protected вызов сигналов в Boost.Signals2 (Прочитано 35119 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #15 :
Октябрь 16, 2015, 18:05 »
Цитата: ViTech от Октябрь 16, 2015, 17:06
вы бы стали использовать такой вариант в production в большом проекте? Какие плюсы и минусы видите?
В большом проекте давно решено какие слот/сигнал юзать, даже попытки пересмотра этого решения будут стоить очень дорого. Поэтому не надо парить про мифическую защиту, скажите просто "хочу попробовать на бусте" - в этом нет ничего плохого
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #16 :
Октябрь 16, 2015, 18:15 »
Цитата: Old от Октябрь 16, 2015, 17:52
Цитата: Racheengel от Октябрь 16, 2015, 17:48
Нет, ибо чукча - не всегда писатель, но иногда и читатель
Господи, а что плохо читается в этом?
Код
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
Сообщений: 858
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #17 :
Октябрь 16, 2015, 18:22 »
Цитата: Racheengel от Октябрь 16, 2015, 17:48
Просто чтобы понять... Вы хотите предотвратить взлом системы?
Это к вопросу инкапсуляции, и необходимости
Приватных методов
, обсуждение которых было таким бурным
. А может и правда, чего нам скрывать? И дать возможность сигналить от нашего имени всем, кому не лень
.
Цитата: m_ax от Октябрь 16, 2015, 17:51
Вообще можно, но из-за двух методов connect/disconnect может и не стоит..
Но как вариант:
...
Этот вариант мне нравится значительно больше. Хотя я не фанат дружбы friend. Кстати, почему не стоит? И как тогда стоит?
Цитата: Igors от Октябрь 16, 2015, 18:05
В большом проекте давно решено какие слот/сигнал юзать, даже попытки пересмотра этого решения будут стоить очень дорого. Поэтому не надо парить про мифическую защиту, скажите просто "хочу попробовать на бусте" - в этом нет ничего плохого
Я интереса "хочу попробовать на бусте" вроде как изначально и не скрывал
. Нужна эта "мифическая защита" или нет, меня тоже интересует, и мнения по этому поводу. А так же есть ли такая система сигнал-слот, которая отвечает канонам ООП.
Записан
Пока сам не сделаешь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #18 :
Октябрь 16, 2015, 18:33 »
Цитата: Racheengel от Октябрь 16, 2015, 18:15
Ненативно
Это мы с вами сейчас понимаем, о чем идет речь, а Раджапраштану из Бангалора может стать не по себе
Ну конечно, Q_OBJECT нативненько, а это не нативненько.
Все документируется и даже последний индус все поймет.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #19 :
Октябрь 16, 2015, 19:03 »
Цитата: ViTech от Октябрь 16, 2015, 18:22
А так же есть ли такая система сигнал-слот, которая отвечает канонам ООП.
До введения нового формата коннекта отвечала Qtшная.
Мне кажется, что на чистом С++ без moc такое сделать будет не легко, если вообще возможно.
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #20 :
Октябрь 16, 2015, 19:24 »
Цитировать
Кстати, почему не стоит? И как тогда стоит?
Ну не знаю) У меня нет универсального рецепта) Это уже вы сами решайте)
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #21 :
Октябрь 16, 2015, 19:35 »
Цитата: Old от Октябрь 16, 2015, 19:03
До введения нового формата коннекта отвечала Qtшная.
Мне кажется, что на чистом С++ без moc такое сделать будет не легко, если вообще возможно.
Цитата: m_ax от Октябрь 16, 2015, 19:24
Ну не знаю) У меня нет универсального рецепта) Это уже вы сами решайте)
Хорошо. Тогда акцент на то, нужно ли вообще вызов сигналов прятать? Или это желание из разряда: "Ишь чего захотел!"?
Или, если с этим прятаньем так много возни и трудно реализовать, то и фиг с ней, инкапсуляцией?
Это же сигналы, их в здравом разуме никто же не будет снаружи без причины вызывать.
Записан
Пока сам не сделаешь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #22 :
Октябрь 16, 2015, 19:38 »
Цитата: ViTech от Октябрь 16, 2015, 19:35
Это же сигналы, их в здравом разуме никто же не будет снаружи без причины вызывать.
this.
Защита в С++ сделана как защита от ошибок, а не как защита от злоумышленника. Если кому-то понадобиться, то он легко сможет вызывать и приватные методы.
Записан
Bepec
Гость
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #23 :
Октябрь 16, 2015, 19:42 »
При желании можно просто не выдавать указатель на объект с сигналами. Тогда никто его и трогать не будет.
Хотя как правильно заметили, при желании можно вообще откуда угодно вызвать
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #24 :
Октябрь 16, 2015, 19:55 »
Цитата: Old от Октябрь 16, 2015, 19:38
Защита в С++ сделана как защита от ошибок, а не как защита от злоумышленника. Если кому-то понадобиться, то он легко сможет вызывать и приватные методы.
Со злоумышленниками понятно, от них не защитишься. А как быть с не очень опытными разработчиками, или теми, кто "сделаю щас быстренько, тут проще самому сигнал вызвать, чем ждать пока он появится"? Следить и по рукам бить? Или это слишком фантастический сценарий: неправильный вызов сигнала, и об этом не стоит беспокоиться?
Цитата: Bepec от Октябрь 16, 2015, 19:42
При желании можно просто не выдавать указатель на объект с сигналами. Тогда никто его и трогать не будет.
Хотя как правильно заметили, при желании можно вообще откуда угодно вызвать
Если не давать указатель, то и подключиться к нему никто не сможет
. Толку от такого объекта с его сигналами
.
Я так понимаю, что в конечном итоге всё сводится к порядочности и разумности разработчиков
.
Записан
Пока сам не сделаешь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #25 :
Октябрь 16, 2015, 19:59 »
Цитата: ViTech от Октябрь 16, 2015, 19:55
Со злоумышленниками понятно, от них не защитишься. А как быть с не очень опытными разработчиками, или теми, кто "сделаю щас быстренько, тут проще самому сигнал вызвать, чем ждать пока он появится"? Следить и по рукам бить? Или это слишком фантастический сценарий: неправильный вызов сигнала, и об этом не стоит беспокоиться?
Сначала всем сказать, что эмитить сигнал может класс, его содержащий, а потом следить и с чистой совестью бить по рукам.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #26 :
Октябрь 16, 2015, 23:13 »
Цитата: Old от Октябрь 16, 2015, 19:59
Сначала всем сказать, что эмитить сигнал может класс, его содержащий, а потом следить и с чистой совестью бить по рукам.
+1
Цитата: ViTech от Октябрь 16, 2015, 19:35
Хорошо. Тогда акцент на то, нужно ли вообще вызов сигналов прятать? Или это желание из разряда: "Ишь чего захотел!"?
Или, если с этим прятаньем так много возни и трудно реализовать, то и фиг с ней, инкапсуляцией?
Это же сигналы, их в здравом разуме никто же не будет снаружи без причины вызывать.
Здравый смысл никто не отменял. Если человек будет пытаться сделать подобное - ССЗБ. Тем более, неопытный. Это ж еще ему до этого додуматься надо - вызвать эмит сигнала от имени левого класса
«
Последнее редактирование: Октябрь 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
Гость
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #27 :
Октябрь 17, 2015, 01:08 »
Не отнимайте у юных и убогих возможность выстрелить себе в голову
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #28 :
Октябрь 17, 2015, 02:22 »
Цитата: Bepec от Октябрь 17, 2015, 01:08
Не отнимайте у юных и убогих возможность выстрелить себе в голову
Ладно бы себе, они ж и другим отстрелить головы могут
.
Записан
Пока сам не сделаешь...
Bepec
Гость
Re: Protected вызов сигналов в Boost.Signals2
«
Ответ #29 :
Октябрь 17, 2015, 10:57 »
До сих пор в упор не понимаю, что вам мешает нужные вам сигналы вывести на интерфейсный класс, а свой спрятать внутри. И фиг кто подцепится.
Т.е. пробросить нужные сигналы через интерфейсный, а внутренние не проявлять. И получаем ваши хотелки - класс с сигналами внутри (которые никто не может вызвать, ибо нет доступа к указателю на класс) и с сигналами проброшенными через интерфейсный класс, которые только и сможет вызывать и цеплять программист.
PS это же простое использование инкапсуляции - не хошь чтобы рылись в нутрях - дай только интерфейсный класс
«
Последнее редактирование: Октябрь 17, 2015, 11:00 от Bepec
»
Записан
Страниц:
1
[
2
]
3
4
...
6
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...