2016-04-23 9 views
1

Im используя класс 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&)' 

Это происходит here и here, но из тех, ответа я не могу понять, что я должен делать в моем коде, чтобы исправить это.

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

 Смежные вопросы

  • Нет связанных вопросов^_^