C-Rückruf mit Klassenmitglied für mehrere Klassen
Problem:
In C, wie Können Sie eine generische Rückruffunktion erstellen, die mit mehreren Klassen funktioniert, von denen jede über ein eigenes Rückrufmitglied verfügt? Funktion?
Lösung:
Ursprünglich wurden eine statische Rückrufmethode und ein Zeiger auf die Instanz verwendet, dieser Ansatz kann jedoch verbessert werden. Hier sind zwei alternative Lösungen:
Verwenden Sie C 11 std::function und std::bind:
void addHandler(std::function<void(int)> callback);
std::bind(&MyClass::Callback, this, _1)
Verwenden von C 11 Lambda-Funktionen:
Mit Lambda-Funktionen können Sie den Code weiter vereinfachen:
handler->addHandler([](int x) { std::cout << "x is " << x << '\n'; });
Das obige ist der detaillierte Inhalt vonWie erstelle ich generische C-Rückrufe für mehrere Klassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!