Heim > Backend-Entwicklung > C++ > Wie erstelle ich generische C-Rückrufe für mehrere Klassen?

Wie erstelle ich generische C-Rückrufe für mehrere Klassen?

Mary-Kate Olsen
Freigeben: 2024-12-10 06:31:13
Original
929 Leute haben es durchsucht

How to Create Generic C   Callbacks for Multiple Classes?

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:

  1. Definieren Sie einen Ereignishandler, der einen std:: akzeptiert. Funktion als Argument:
void addHandler(std::function<void(int)> callback);
Nach dem Login kopieren
  1. Binden Sie die Callback-Funktion an die Instanz mit std::bind:
std::bind(&amp;MyClass::Callback, this, _1)
Nach dem Login kopieren

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'; });
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage