
03.09.2021, 22:14
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от SR_team
Почему не оператор ()? Как это выглядит?
Оператор * перегружен для вызова функции, чтобы в range-based for можно было красиво получить возвратное значение. Да и в целом это позволяет много красивых вещей делать.
Ну например вот такое:
C++:
Код:
auto
iterate
=
signal
.
emit_iterate
(
"test"
)
;
std
::
vector
vec
(
iterate
.
begin
(
)
,
iterate
.
end
(
)
)
;
И в vec будут все значения которые вернулись после вызова коллбэков
(Только что залил обновление на гите, теперь на MSVC можно конструировать STL контейнеры через итераторы. Microsoft решили выебнуться проверкой на поля итератора)
Сообщение от SR_team
Почему не оператор ()?
Мне кажется что вызов сигнала через () не очень явное действие, поэтому решил сделать на emit. В целом это на сам сигнал никак не влияет
Сообщение от SR_team
Как это выглядит?
Примерно вот так:
Сообщение от SR_team
UPD: В примере многопоточки сигнал что-то возвращает int(int)
UPD: сигнал может что-то возвращать, но при вызове через emit эти значения получить нельзя. Для этих целей стоит юзать emit_iterate и его методы begin и end возвращающие итераторы
|
|
|