Bonjour,
Je cherche à faire une fonction callback depuis une class. j'ai donc:
maClas.hpp
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
class maClass{
private:
void (*note_on_callback)(int i);
void doJob();
public:
lipo();
void begin();
void loop();
void setNoteOnCallback(void(*note_on_callback)(int* i));
};
maClass.cpp
#include "maClass.h"
maClass::maClass(){
}
void maClass::setNoteOnCallback(
void (*note_on_callback)(int* i)) {
this->note_on_callback = note_on_callback;
}
void maClass::doJob(){
int v = 0;
for(int i =0; i < 10; i++){
v = i;
delay(50);
}
if(note_on_callback){
note_on_callback(v);
}
}
void maClass::loop(){
Serial.println("maClass::loop");
}
puis enfin mon fichier .ino
#include "maClass.h";
maClass maClassA
void note_on_callback(int i) {
printf("Note on : channel %d\n", i);
}
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println("main::loop");
maClassA.loop();
delay(1000);
}
A la compilation j'ai l'erreur:
lipo.cpp: In member function 'void lipo::setNoteOnCallback(void ()(int))':
lipo.cpp:19: error: invalid conversion from 'void ()(int)' to 'void (*)(int)'
pourant je pass bien un int ...
Une explication SVP.