Неразрешенный тип перегруженной функции, когда функция принадлежит классу

Я использую класс Бегущая строка в моем коде, как показано внутри моего класса под названием 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 определены в моем файле заголовков.

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 .: извините за мой плохой английский

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]