if (m_pEditor->canDeleteNode(subnode)) {
auto entDelete = gnaNew<grUi::DropDownMenuEntry>(GTXT("Delete"));
entDelete->eventSink_performAction.addHandler([this, subnode](auto &ev) {
m_pEditor->deleteNode(subnode);
return true;
});
ev.dropDown->add(entDelete);
}
return true;
});
а насколько идиоматично такое? (ну, если не делать такое декларативно)
зависит от того кого спрашивать я был лично знаком с людьми, которые про это скажут "ересь" и также был лично знаком с людьми, которые скажут "шикарно, добротно сделано"
моё мнение - ересь, но проблема в том, что её писал я)))
В меню добавляют пункт , и вешают на него лямбду ?
а на текущей работе мой начальник при виде камелКейса становится весь красный и начинает выпускать пену изо рта
у меня там как видишь снейк_камелКейс местами)))
И что тут плохого может быть ? Надо только быть уверенным, что захват лямбды не протухнет до конца жизни этого пункта меню.
Верблюд оседлал змею...
так он же по значению
ну или хотя бы не проживёт дольше чем объект на который кажет захваченый this
В коде этого не видно, да и this что по значению, что по ссылке...
хмммм для этого надо как минимум каким-то образом закрыть окно не закрывая меню :) что в принципе невозможно, потому что меню закрывается сразу же перед этим =)
"life finds a way" ™
ну а subnode вообще рефкаунтед, он там тупо не может протухнуть :)
ну мы по этому куску кода этого знать то не можем, это надо в контекст быть погруженным
если ты думаешь, что это хорошо, то знай, что это не так, это плохо. Объект существует пока есть его обработчик, а обработчик - пока есть объект... "Классно" (нет)
не совсем так :) у меня много где протыканы вручную weak референсы
Обсуждают сегодня