Es funktioniert nur wenn es nur eine LEDControl() Funktion gibt, sonst scheint der Compiler das nicht auflösen zu können.
1
[build] /home/jojo/projects/mbed-ce-hello-world/app_Fingerprint/main.cpp:25:27: error: no matching function for call to 'events::EventQueue::call(Adafruit_Fingerprint*, <unresolved overloaded function type>, uint8_t, uint8_t, uint8_t, uint8_t)'
die komplette Fehlermeldung ist etwas hardcore und im Anhang.
Wie kann ich dem Compiler helfen die richtige Funktion zu finden wenn es überladene gibt?
Danke,
Aber je mehr ich mir das anschaue bin ich sicher das die beiden Funktionen nicht unterschieden werden können. Beide passen mit den varargs und der Compiler kann nicht wissen welche mir lieber ist.
Da hätte ich nur erwartet das eine Fehlermeldung mit ambiguous irgendwas kommt.
Aber je mehr ich mir das anschaue bin ich sicher das die beiden
Funktionen nicht unterschieden werden können. Beide passen mit den
varargs und der Compiler kann nicht wissen welche mir lieber ist.
Doch, kann er. Daran liegt es nicht. Da ist ein const qualifier Problem.
Wenn ich die nicht benutzte Funktion mit bool Argument auskommentiere dann funktioniert es ja.
Bei diesem call musste ich auch die uint8_t typecasts angeben, sonst ging es auch nicht. Aber es bedeutet das dieser call passt.
Der Compiler versucht die Überladungen von EventQueue.call() aufzulösen, die cv-qualifiers passen nicht bei den Versionen mit const volatile. Das ist ja auch keine Fehlermeldungen, sondern die notes mit denen der Compiler versucht hat das aufzulösen.
Es funktioniert nur wenn es nur eine LEDControl() Funktion gibt, sonst
scheint der Compiler das nicht auflösen zu können.
Erwartest du, dass er aus der Anzahl der an ein variadisches Template übergebenen Argumente und einem Aufruf innerhalb des Templates erkennt, welche Funktion du meinst? Ich denke nicht, dass er das tut.
Bingo und Danke, so funktioniert es (mit uint8_t statt void als return type).
Bis zum static_cast bin ich auch gerade gekommen, hatte da aber noch nicht die richtige Syntax hinbekommen.
Ja, ein typedef entzerrt das. So einen Ausdruck zu bauen ist die eine Sache, das zu verstehen wenn man es vorgesetzt bekommt eine andere...
Um die LED am Fingerprint Sensor ein und auszuschalten, für die Puristen hier :)