Wie funktionieren Funktionszeiger?

8

Ich stelle einige spezifische Fragen.

  1. Wie kann ich sie in einer Klasse initialisieren?
  2. Wie kann ich eine Funktion als Argument übergeben?
  3. Müssen Funktionszeiger in der Klasse deklariert und definiert werden?

Für Frage Nummer 2 hier ist was ich meine:

%Vor%     
Ramilol 25.12.2010, 00:09
quelle

4 Antworten

24

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:

%Vor%

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:

%Vor%

Sie können dann diesen neu definierten Typ als Argumenttyp für die Funktion verwenden:

%Vor%     
Jacob Relkin 25.12.2010, 00:18
quelle
2

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.

    
Javier Loureiro 25.12.2010 03:51
quelle
1

Sie müssen f auf diese Weise deklarieren:

%Vor%

hier ist ein hervorragendes Tutorial über Funktionszeiger und Rückrufe.

    
Luis G. Costantini R. 25.12.2010 00:44
quelle
0

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.

    
Koray 25.12.2010 08:02
quelle

Tags und Links