Heim > Backend-Entwicklung > C++ > Wie übergebe ich Memberfunktionszeiger an externe Funktionen in C?

Wie übergebe ich Memberfunktionszeiger an externe Funktionen in C?

Barbara Streisand
Freigeben: 2024-11-29 06:25:14
Original
719 Leute haben es durchsucht

How to Pass Member Function Pointers to External Functions in C  ?

Member-Funktionszeiger an externe Funktionen übergeben

Member-Funktionszeiger als Argumente an externe Funktionen übergeben, kann schwierig sein, insbesondere beim Umgang mit Klassentypen . Diese Frage konzentriert sich auf ein bestimmtes Szenario, in dem eine Mitgliedsfunktion einer Klasse an eine Funktion übergeben werden muss, die einen Zeiger auf eine Mitgliedsfunktion erwartet.

Um dies zu erreichen, benötigt die externe Funktion sowohl einen Zeiger auf das Objekt als auch einen Zeiger auf die Memberfunktion. Im angegebenen Codeausschnitt übernimmt die externe Funktion MenuButton::SetButton() einen Zeiger auf das Objekt als ButtonObj und einen Zeiger auf die Memberfunktion als ButtonFunc.

Die Lösung besteht darin, sowohl den Objektzeiger als auch das Member zu übergeben Funktionszeiger auf MenuButton::SetButton(). In der bereitgestellten Klasse testMenu ruft der Konstruktor x.SetButton(...) auf und übergibt dies als Objektzeiger und test2 als Mitgliedsfunktionszeiger. Dadurch wird sichergestellt, dass die externe Funktion beim Aufruf sowohl auf das Objekt als auch auf seine Mitgliedsfunktion zugreifen kann.

Hier ist der geänderte Code:

testMenu::testMenu()
  :MenuScreen("testMenu")
{
  x.SetButton(100,100,TEXT("buttonNormal.png"), TEXT("buttonHover.png"),
        TEXT("buttonPressed.png"), 100, 40, this, &testMenu::test2);
  draw = false;
}
Nach dem Login kopieren

Innerhalb der externen Funktion MenuButton::SetButton () können der Objektzeiger und der Mitgliedsfunktionszeiger verwendet werden, um die Mitgliedsfunktion mithilfe der Syntax aufzurufen ((ButtonObj)->*(ButtonFunc))();.

Das obige ist der detaillierte Inhalt vonWie übergebe ich Memberfunktionszeiger an externe Funktionen in C?. 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