当函数属于类时,未解析的重载函数类型

Unresolved overloaded function type when function belong to a Class

本文关键字:函数 类型 重载 属于      更新时间:2023-10-16

我在我的代码中使用类Ticker,在我的名为HookNinja的类中如下:

void HookNinja::pulser(float period, float onTime) {
  _ticker1.attach(period, HookNinja::pulseUp, onTime);
}
void HookNinja::pulseUp(float onTime) {
  digitalWrite(2, LOW);
  _ticker2.attach(onTime, HookNinja::pulseDown);
}
void HookNinja::pulseDown() {
  digitalWrite(2, HIGH);
  _ticker2.detach();
}

根据 Ticker 文档,第二个参数是一个函数,但是一个常规参数,我的参数在类中,每次我尝试编译时,我都会得到:

error: no matching function for call to 'Ticker::attach
(float&, <unresolved overloaded function type>, float&)'

这在这里和这里发生,但从这些答案中我不明白我应该在我的代码中做什么来修复它。

注意:_ticker1和 2 在我的头文件中定义。

我怀疑这可能是定义顺序的问题:你首先使用pulseUp()然后定义它;你首先使用pulseDown(),然后定义它。

我的建议:尝试颠倒顺序:首先定义pulseDown()pulseUp()下一个,最后定义pulser()

void HookNinja::pulseDown() {
  digitalWrite(2, HIGH);
  _ticker2.detach();
}
void HookNinja::pulseUp(float onTime) {
  digitalWrite(2, LOW);
  _ticker2.attach(onTime, HookNinja::pulseDown);
}
void HookNinja::pulser(float period, float onTime) {
  _ticker1.attach(period, HookNinja::pulseUp, onTime);
}

PS:对不起,我的英语不好