C Aufrufen eines Zeigers auf eine Mitgliedsfunktion
Das Aufrufen eines Zeigers auf eine Mitgliedsfunktion in C erfordert eine bestimmte Syntax. Hier ist die Anatomie der Syntax:
(*pointer_to_member_function)(object_pointer, arguments);
Beispiel 1: Aufrufen einer Member-Funktion mit einem Zeiger
Bedenken Sie den Codeausschnitt:
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; (*h)(xPos, yPos, width, height); }
Hier ist hitTestList eine Liste von Zeigern auf Mitgliedsfunktionen namens HitTest. Um jede Mitgliedsfunktion mithilfe ihres Zeigers aufzurufen, müssen Sie den Zeiger this angeben, der auf das Objekt verweist, für das die Funktion aufgerufen wird. In diesem Fall haben Sie einen Zeiger auf eine Box-Objektbox, die Sie als diesen Zeiger verwenden können:
(box->*h)(xPos, yPos, width, height);
Beispiel 2: Hinzufügen von Mitgliedsfunktionen zu einer Liste
Bedenken Sie den Codeausschnitt:
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); }
Hier fügen Sie Mitgliedsfunktionen der Box-Klasse zur Liste hinzu Liste. Beachten Sie, dass Sie die Adresse der Mitgliedsfunktion mit &box->HitTest.
übernehmenDas obige ist der detaillierte Inhalt vonWie rufe ich einen Zeiger auf eine Memberfunktion in C auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!