Um einen Funktionszeiger zu definieren, verwenden Sie die folgende Syntax:
%Vor% Um also eine Funktionsreferenz mit dem Namen "doSomething" zu definieren, die ein int
zurückgibt und ein int
Argument übernimmt, schreiben Sie folgendes:
Sie können dann den Bezug einer tatsächlichen Funktion wie folgt zuweisen:
%Vor%Sobald das erledigt ist, können Sie es direkt aufrufen:
%Vor%Da Funktionszeiger im Wesentlichen nur Zeiger sind, können Sie sie tatsächlich als Instanzvariablen in Ihren Klassen verwenden.
Wenn ich Funktionszeiger als Argumente akzeptiere, verwende ich lieber ein typedef
, anstatt die überladene Syntax im Funktionsprototyp zu verwenden:
Sie können dann diesen neu definierten Typ als Argumenttyp für die Funktion verwenden:
%Vor%Es ist nicht die strikte Antwort, aber um konfigurierbaren / zuweisbaren Code als Klassenmitglied einzubeziehen, würde ich erwähnen, eine Klasse / Struktur mit dem Operator () zu verwenden. Zum Beispiel:
%Vor%Sie können:
%Vor%es wird '10' drucken, es habe ich alles ok geschrieben.
Sie müssen f
auf diese Weise deklarieren:
hier ist ein hervorragendes Tutorial über Funktionszeiger und Rückrufe.
Um die dritte Frage zu beantworten, müssen Sie sie nicht in einer Klasse deklarieren. Aber um die Kapselung nicht zu überschreiten, bevorzuge ich gewöhnlich Mitgliedsfunktionszeiger oder Funktoren, die wieder Bestandteil von Klassen sind. Die obigen Beispiele sind C-Stil-Funktionszeiger außer Luis G. Costantini R. Sie können dies nachsehen Zeiger auf Mitgliedsfunktionszeiger C-Stil-Funktionszeiger werden im Allgemeinen als Callback-Mechanismen betrachtet, bei denen es einen C-Code gibt, an den Sie asynchrone Nachrichten erhalten. In solchen Fällen gibt es keine Optionen, sondern Handlermethoden im globalen Gültigkeitsbereich.
Tags und Links c c++ pointers function-pointers