же нет такого как в питоне и прочем, что можно в функцию передавать указатели на другую функцию с неявной сигнатурой?
Можно указатель на функцию приводить к void (*)() и передавать.
хм не совсем понял, можно пример объявления там void foo(QString args, ???someFoo???)
void foo(QString args, void (*fp)())
хм, не разу не видел такой прием, надо погуглить, мерси
Что значит неявная сигнатура?
тут вопрос не в передаче, а в том, что в плюсах сигнатура = сигнатура. это не js, где передаешь что хочешь и потом через arguments достаешь
такс, проще задачу обыяснить, есть класс Core в нем есть компанент, котороый связывается с базой данных, все построено на Qt тобишь сигнал слот, так вот, на разные запросы идут разные хандлеры, тобишь есть функция void request(QString SQLString, QString action); сейчас как это работает отправляется сигнал со стройкой SQL и меткой, Db обрабатывается ответ, и отправляет его с меткой, функция приемник через обычный свич смотрит метку и уже понимает что делать с ответом, все вроде нечего но функция приемник уже выросла неимоверно и хочется сразу бросать калбэк, вот не разу с ними не работал, хочется разобратся
сделай что-то вроде базового класса для возможных аргументов listener функций. Что-то типа своего Any
Лучше покажи кодом
Лучше сделать any_function на type erasure тогда уж
щя gist соберу
Ну я бы вообще лучше делал constraint'ами листенеры на плюсах. Но на плюсах ивенты сложные ни разу не реализовывал, так что мб есть решения получше
https://gist.github.com/Mesteriis/6f2a1ab3ae497d222cb24f0629b98fa1
У тебя action только логируется, я так и не понял что ты хочешь сделать
Я хотел бы избавится от огромной функции с кейсом и передавать функции которую надо вызвать в случае успеха или не успеха
Ну дак передавай с фиксированной сигнатурой
Обсуждают сегодня