In einem C++ - Projekt verwende ich eine C-Bibliothek für den Zugriff auf einige Hardware. Die C-Bindings enthalten Rückrufe, um über Änderungen an einigen Eingangspins zu informieren. Die Funktion für den Rückruf sieht wie folgt aus: void callback(char port, uint8_t interrupt_mask, uint8_t value_mask, void *user_data)
Zuordnung von C++ - Memberfunktion zu C-Callback
In meiner Implementierung Ich habe eine SensorController
Klasse, die eine Elementfunktion hat, die den Rückruf erhalten soll. Die Elementfunktion sieht folgendermaßen aus: void SensorController::pinChanged(char port, uint8_t interrupt_mask, uint8_t value_mask, void *user_data)
.
Jetzt fragte ich mich, was wäre der sauberste Weg zu vermeiden, die pinChanged
Funktion statisch zu machen, um die Funktion dem Rückruf zuweisen zu können?
Ja, genau. Das ist der springende Punkt beim Bereitstellen eines Benutzerkontextzeigerarguments. –
Sie sollten static_cast verwenden (reinterpret_cast ist implementierungsdefiniert). – Adam