【问题标题】:Unresolved overloaded function type when function belong to a Class函数属于类时未解析的重载函数类型
【发布时间】:2016-04-23 15:38:04
【问题描述】:

我在我的代码中使用 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 在我的头文件中定义。

【问题讨论】:

    标签: c++ arduino ticker


    【解决方案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.:对不起我的英语不好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多