Heim >Backend-Entwicklung >C++ >Wie rufe ich C-Zeiger korrekt auf und füge sie zu Mitgliedsfunktionen hinzu?

Wie rufe ich C-Zeiger korrekt auf und füge sie zu Mitgliedsfunktionen hinzu?

Susan Sarandon
Susan SarandonOriginal
2024-12-07 14:33:12518Durchsuche

How to Correctly Call and Add C   Pointers to Member Functions?

C-Zeiger auf Memberfunktionen aufrufen

Das Verständnis der richtigen Syntax zum Aufrufen von Zeigern auf Memberfunktionen in C ist von entscheidender Bedeutung. Diese Frage untersucht die spezifische Methode zum Aufrufen solcher Zeiger sowie den Prozess des Hinzufügens von Mitgliedsfunktionen zu einer Liste.

Zeiger auf Mitgliedsfunktionen aufrufen

Die Frage zeigt ein Codeausschnitt, der versucht, Zeiger auf Mitgliedsfunktionen mithilfe der Syntax aufzurufen:

(*h)(xPos, yPos, width, height);

Die korrekte Syntax erfordert jedoch Bereitstellung sowohl der benannten Parameter als auch des this-Zeigers. Daher lautet die korrigierte Zeile wie folgt:

(box->*h)(xPos, yPos, width, height);

Dadurch wird sichergestellt, dass beim Aufruf der Mitgliedsfunktion der richtige Zeiger verwendet wird.

Mitgliedsfunktionen zu einer Liste hinzufügen

Die Frage zeigt auch, wie man Mitgliedsfunktionen zu einer Liste hinzufügt. Hier werden Zeiger auf Memberfunktionen in einer std::list gespeichert. Der folgende Code veranschaulicht den Prozess:

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

Dieser Code durchläuft eine Liste von Box-Zeigern und schiebt die Adresse jeder HitTest-Mitgliedsfunktion auf die std::list. Jede Member-Funktion wird durch einen Zeiger auf die Member-Funktion dargestellt, der auf den This-Zeiger des spezifischen Box-Objekts verweist.

Das obige ist der detaillierte Inhalt vonWie rufe ich C-Zeiger korrekt auf und füge sie zu Mitgliedsfunktionen hinzu?. 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