Heim > Backend-Entwicklung > C++ > Wie rufe ich eine Member-Funktion mithilfe eines Zeigers in C korrekt auf?

Wie rufe ich eine Member-Funktion mithilfe eines Zeigers in C korrekt auf?

Linda Hamilton
Freigeben: 2024-12-24 04:32:13
Original
834 Leute haben es durchsucht

How to Correctly Call a Member Function Using a Pointer in C  ?

Aufruf über einen Member-Funktionszeiger

In C ermöglichen uns Member-Funktionszeiger, Memberfunktionen wie reguläre Funktionen durch Zeiger zu behandeln. Allerdings müssen bestimmte Syntaxregeln befolgt werden, um Kompilierungsfehler zu vermeiden.

Betrachten Sie den folgenden Code, in dem wir versuchen, die Walk-Memberfunktion der Cat-Klasse mithilfe eines Memberfunktionszeigers aufzurufen:

class cat {
public:
   void walk() {
      printf("cat is walking \n");
   }
};

int main(){
   cat bigCat;
   void (cat::*pcat)();
   pcat = &cat::walk;
   bigCat.*pcat();
}
Nach dem Login kopieren

Der obige Code kann nicht kompiliert werden, mit der Fehlermeldung „bigCat.*pcat();-Anweisung lässt sich nicht kompilieren.“ Dies liegt daran, dass es ein Prioritätsproblem mit der Syntax gibt.

Member-Funktionszeiger verwenden den Operator „.“, während Funktionsaufrufe normale Klammern verwenden. Die Priorität von Funktionsaufrufen ist höher als die von „“. Operator.

Um das Problem zu beheben, sind zusätzliche Klammern erforderlich, um die Vorrangregel zu überschreiben:

(bigCat.*pcat)();
Nach dem Login kopieren

Mit dieser Korrektur ruft der Code die Walk-Funktion nun ordnungsgemäß über den Mitgliedsfunktionszeiger auf .

Das obige ist der detaillierte Inhalt vonWie rufe ich eine Member-Funktion mithilfe eines Zeigers in C korrekt 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