Я использую класс Бегущая строка в моем коде, как показано внутри моего класса под названием 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);
}
p.s .: извините за мой плохой английский
Других решений пока нет …