Название: Передать сигнал в функцию возможно? Отправлено: Павелъ от Март 01, 2018, 14:40 Доброго времени суток.
В общем писал, писал много То есть есть аргумент для QProcess. Указатель на QProcess. И сигнал. И собственно, что я копипастю, ведь можно просто написать одну функцию и вызывать из этих похожих функций с аргументами. Указатель на QProcess и аргумент типа QString передать проблем нет. Но, что делать с сигналом? Нет, конечно можно создать 20-этажный условный оператор по аргументам и посылать из него для каждого случая свой сигнал. Но, разве это красиво? Пошёл следующим путём. Объявил тип: Код: typedef void (*SIG)(QString,QString); Метод: Код: void dmidecodeS(QProcess *proc, QString argument,SIG sig); Код: void IpItem::dmidecodeS(QProcess *proc, QString argument, SIG sig) Пробую передать в аргументы функции сигнал: Код: dmidecodeS(_biosVersionProc,"bios-version",&IpItem::signalBiosVersion); Получаю ошибку: Код: /home/pavel/newnetmonitor/newNetMonitor/ipitem.cpp:781: ошибка: no matching function for call to ‘IpItem::dmidecodeS(QProcess*&, const char [13], void (IpItem::*)(QString, QString))’ Смотрю, особо никто не задавался таким вопросом в инете. Есть решение? PS Забыл про сигнал, который пытаюсь передать, вот он: Код: void signalBiosVersion(QString ip,QString version); Название: Re: Передать сигнал в функцию возможно? Отправлено: ViTech от Март 01, 2018, 15:12 Объявил тип: Это указатель на функцию.Код: typedef void (*SIG)(QString,QString); Пробую передать в аргументы функции сигнал: А тут указатель на метод класса.Код: dmidecodeS(_biosVersionProc,"bios-version",&IpItem::signalBiosVersion); Подробности здесь: Pointers to Member Functions (https://isocpp.org/wiki/faq/pointers-to-members). |