函数属于Class时未解决的重载函数类型

时间:2016-04-23 15:38:05

标签: c++ arduino ticker

我在我的代码中使用类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&)'

这种情况发生在herehere,但从这些答案中我无法理解我应该在代码中做些什么来修复它。

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

1 个答案:

答案 0 :(得分:1)

我怀疑这可能是定义顺序的问题:首先使用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);
}

p.s:抱歉我的英语不好