我试图将函数void MainWindow :: lowPower()链接到wiringPiISR(int,int,void(*)(void)。我的问题是我收到以下错误:
cannot convert 'void (MyClass::*)()' to 'void (*)()
当我试图以这种方式指向这个功能时:
void (MainWindow::*lowPower)(void);
wiringPiISR(4, INT_EDGE_BOTH, lowPower);
wiringPiISR的语法是:
int wiringPiISR (int pin, int edgeType, void (*function)(void))
我无法使lowPower静态,因为我需要调用几个对象
如何解决此问题?
答案 0 :(得分:1)
我找到了一个解决方案,这可能不是最好的方式,但可能性:
在* .cpp:
的开头Trigger trigger;
void interrupt()
{
emit trigger.triggered();
}
触发器是一个非常简单的类,只有一个公共信号(触发)。此信号在其默认构造函数中连接到MainWindow类中的公共槽,其中wiringPiISR也声明为:
wiringPiISR(0, INT_EDGE_BOTH, *interrupt);
我知道这不是完美的解决方案,因为它使用了函数指针,但我不想分别更改wiringPi.h的代码wiringPi.c。