в котором есть сигнал finish функтор должен само уничтожится то есть:
connect(functor, &Functor::finish, this, &slot1); //slot1 выполняет какие то действия...
connect(functor, &Functor::finish, functor, &QObject::deleteLater);
В slot1:
auto obj = static_cast<Functor*>(sender());
auto r = obj.result(); //В общем идет обращение к нему... объекту который помечен на удаление с окончанием цикла обработки событий.
Я потестил, на 2 компиляторах, вроде все норм происходит, объект функтора уничтожается после выполнения slot1. Но вот общий привкус кода...
На сколько это не правильно писать так?
в принципе, ничего страшного, порядок вызова обработчиков определен: If several slots are connected to one signal, the slots will be executed one after the other, in the order they have been connected, when the signal is emitted.
Обсуждают сегодня