无法将 'void (MyClass::*)()' 转换为 'void (*)()
Cannot convert 'void (MyClass::*)()' to 'void (*)()
我正在尝试 link 函数 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 静态,因为我需要调用一些对象
我该如何解决这个问题?
我找到了一个可能不是最好的解决方案,但有可能:
在 *.cpp 的开头:
Trigger trigger;
void interrupt()
{
emit trigger.triggered();
}
触发器是一个非常简单的 class,只有一个 public 信号(已触发)。该信号在其默认构造函数中连接到 MainWindow class 中的 public 插槽,其中 wiringPiISR 也声明为:
wiringPiISR(0, INT_EDGE_BOTH, *interrupt);
我知道这不是完美的解决方案,因为它使用了函数指针,但我不想分别更改 wiringPi.h 的代码 wiringPi.c。
我正在尝试 link 函数 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 静态,因为我需要调用一些对象
我该如何解决这个问题?
我找到了一个可能不是最好的解决方案,但有可能:
在 *.cpp 的开头:
Trigger trigger;
void interrupt()
{
emit trigger.triggered();
}
触发器是一个非常简单的 class,只有一个 public 信号(已触发)。该信号在其默认构造函数中连接到 MainWindow class 中的 public 插槽,其中 wiringPiISR 也声明为:
wiringPiISR(0, INT_EDGE_BOTH, *interrupt);
我知道这不是完美的解决方案,因为它使用了函数指针,但我不想分别更改 wiringPi.h 的代码 wiringPi.c。