C++ 函数属于类时未解析的重载函数类型
我在名为HookNinja的类中使用代码中的类,如下所示: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
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);
}