Heim >Backend-Entwicklung >C++ >Wie rufe ich Zeiger auf Memberfunktionen in C auf?

Wie rufe ich Zeiger auf Memberfunktionen in C auf?

Linda Hamilton
Linda HamiltonOriginal
2024-12-16 04:53:17454Durchsuche

How Do I Call Pointers to Member Functions in C  ?

Zeiger auf Mitgliedsfunktionen in C aufrufen

In C bieten Zeiger auf Mitgliedsfunktionen eine praktische Möglichkeit, Methoden für Objekte dynamisch aufzurufen. Ihre Syntax kann jedoch eine Herausforderung darstellen.

Syntax zum Aufrufen von Zeigern auf Mitgliedsfunktionen

Um einen Zeiger auf eine Mitgliedsfunktion aufzurufen, wird die folgende Syntax verwendet:

(object->*pointer_variable)(params)

wobei:

  • Objekt ist die Instanz, auf der die Funktion ausgeführt wird aufgerufen
  • *pointer_variable ist der Zeiger auf die Mitgliedsfunktion
  • params sind die an die Funktion übergebenen Parameter

Syntaxbeispiel

Bedenken Sie den folgenden 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;
    (box->*h)(xPos, yPos, width, height);
}

In diesem Beispielsweise wird eine Liste von Zeigern auf HitTest-Memberfunktionen durchlaufen. Jeder Zeiger wird aus der Liste abgerufen und aufgerufen, indem der Boxzeiger wie folgt bereitgestellt wird.

Mitgliedsfunktionen zu einer Liste von Zeigern hinzufügen

Um Mitgliedsfunktionen zu einer Liste hinzuzufügen Für Zeiger kann die folgende Syntax verwendet werden:

list.push_back(&box->HitTest);

Dieser Code verschiebt den Zeiger auf die HitTest-Mitgliedsfunktion der Box Objekt in die Liste einfügen.

Das obige ist der detaillierte Inhalt vonWie rufe ich Zeiger auf Memberfunktionen 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