Heim >Backend-Entwicklung >C++ >Wie rufe ich Zeiger auf Memberfunktionen in C korrekt auf?
Zeiger auf Mitgliedsfunktionen bieten eine praktische Möglichkeit zum Speichern und Ausführen bestimmter Mitgliedsfunktionen und bieten gleichzeitig Flexibilität bei der dynamischen Bindung. Der Aufruf dieser Funktionszeiger hat jedoch seine eigene Syntax.
Bei nicht statischen Memberfunktionen erfordert der Aufruf eines Funktionszeigers die Bereitstellung sowohl benannter Parameter als auch eines this-Zeigers, der das Objekt darstellt, auf dem Die Funktion wird aufgerufen. Der folgende korrigierte Code demonstriert die korrekte Syntax:
typedef void (Box::*HitTest)(int x, int y, int w, int h); for (std::list::<HitTest>::const_iterator i = hitTestList.begin(); i != hitTestList.end(); ++i) { HitTest h = *i; (box->*h)(xPos, yPos, width, height); }
Hier ist box ein Zeiger auf das Box-Objekt, das als dieser-Zeiger fungiert. Durch die Verwendung von box->*h rufen wir im Wesentlichen die Mitgliedsfunktion h auf der spezifischen Box-Instanz auf, auf die box zeigt.
Bezüglich des Hinzufügens von Mitgliedsfunktionen zur Liste wäre der korrigierte Code:
std::list<HitTest> list; for (std::list<Box*>::const_iterator i = boxList.begin(); i != boxList.end(); ++i) { Box* box = *i; list.push_back(&Box::HitTest); }
Das obige ist der detaillierte Inhalt vonWie rufe ich Zeiger auf Memberfunktionen in C korrekt auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!