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
Linda HamiltonOriginal
2024-12-05 15:45:10252Durchsuche

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);

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.

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

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