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
Mary-Kate OlsenOriginal
2024-12-10 06:31:13884Durchsuche

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);
  1. Binden Sie die Callback-Funktion an die Instanz mit std::bind:
std::bind(&amp;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!

Stellungnahme:
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