Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数属于类时未解析的重载函数类型_C++_Arduino_Ticker - Fatal编程技术网

C++ 函数属于类时未解析的重载函数类型

C++ 函数属于类时未解析的重载函数类型,c++,arduino,ticker,C++,Arduino,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::pulseDow

我在名为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&)'
错误:对“Ticker::attach”的调用没有匹配的函数
(浮动和浮动,浮动和浮动)'
这种情况会发生,但从这些答案来看,我无法理解我应该在代码中做些什么来修复它


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

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

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

p、 对不起,我的英语不好

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);
}