我正在尝试将函数void MainWindow :: lowPower()链接到wireningPiISR(int,int,void(*)(void)。我的问题是出现以下错误:
cannot convert 'void (MyClass::*)()' to 'void (*)()
当我试图以这种方式指向函数时:
void (MainWindow::*lowPower)(void);
wiringPiISR(4, INT_EDGE_BOTH, lowPower);
connectionPiISR的语法为:
int wiringPiISR (int pin, int edgeType, void (*function)(void))
我无法将lowPower设为静态,因为我需要调用一些对象
如何解决此问题?
我找到了一种可能不是最好的方法,但是可能的解决方案:
在* .cpp开头:
Trigger trigger;
void interrupt()
{
emit trigger.triggered();
}
触发器是一个非常简单的类,仅包含一个公共信号(已触发)。该信号连接到其默认构造函数MainWindow类中的公共插槽,其中,connectionPiISR也声明为:
wiringPiISR(0, INT_EDGE_BOTH, *interrupt);
我知道这不是一个完美的解决方案,因为它使用了功能指针,但是我不想更改connectionPicture.h或wiringpiing.c的代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句