1

可能重复:
如何传递成员函数指针?

所以我一直在为 Arduino 编写一些库来修剪我一直在研究的一个相当大的草图。到目前为止一切正常,除了在我的一个类的构造函数中。我用它来初始化任何变量、引脚模式和附加中断。当我尝试附加中断时出现问题,我在我的类中声明和定义了函数,以及我是否将它们附加到 setup() 块的 Arduino 草图中,或者如果我在构造函数的库中执行它,我收到此错误:

“void (RotaryEncoders::)()”类型的参数与“void (*)()”不匹配

代码的基本结构如下:

RotaryEncoders::RotaryEncoders() {
     //Initialise some variables
     //Set up some pin modes
     attachInterrupt(2, doRedEncoder, CHANGE);
}

void RotaryEncoders::doRedEncoder() {
     //Some code, blah blah blah
}

我假设当您纯粹在 Arduino IDE 中执行此操作时,这些工具会对内存中的函数执行某些操作以使其正常工作。我认为解决方案很简单,但我看不到:S 谢谢:D

4

1 回答 1

1

指向成员函数的函数指针是一个坏主意,因为这些函数通常由对象使用。

解决它的两种方法:

解决方案1:有一个外部函数(非成员函数)(常规C风格函数)为你做事。

解决方案2:看看这个

祝你好运。

于 2012-10-19T14:04:04.230 回答