Heim > Backend-Entwicklung > C++ > Wie rufe ich einen Zeiger auf eine Memberfunktion in C auf?

Wie rufe ich einen Zeiger auf eine Memberfunktion in C auf?

Linda Hamilton
Freigeben: 2024-12-05 15:45:10
Original
251 Leute haben es durchsucht

How Do I Call a Pointer to a Member Function in C  ?

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

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

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

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

Hier fügen Sie Mitgliedsfunktionen der Box-Klasse zur Liste hinzu Liste. Beachten Sie, dass Sie die Adresse der Mitgliedsfunktion mit &box->HitTest.

übernehmen

Das 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!

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