Wie kann ich einen Methodenzeiger in eine typisierte Konstante einfügen?

8

Ich würde gerne die Prozedur des Objekts in einem Datensatz verwenden, so:

%Vor%

Ich kann damit ein Array nach Zuweisung erstellen:

%Vor%

Was ich wirklich gerne tun würde, ist eine Konstante zu deklarieren:

%Vor%

Ich bekomme jedoch Fehler für DoHelp und DoLoad - Konstanter Ausdruck erwartet. Dies sind zwei Methoden einer Klasse. Gibt es eine Syntax, die ich verwenden muss, um dies zu erledigen, oder bin ich beim Erstellen des Arrays zur Laufzeit fest?

    
imekon 15.06.2013, 09:12
quelle

2 Antworten

7

Eine Objektmethode ist der sogenannte Zwei-Zeiger-Typ. Es enthält die folgenden Informationen:

  1. Die Adresse der Funktion.
  2. Die Adresse des Objekts oder des Betreffs.

Ersteres ist zur Kompilierungszeit bekannt, aber im Allgemeinen nicht. Aus diesem Grund müssen Sie diese Dinge in der Regel zur Laufzeit erstellen.

Wenn Sie festlegen können, dass der Betreff zum Zeitpunkt der Kompilierung bekannt ist, können Sie eine typisierte Konstante Ihres Datensatztyps deklarieren. Zum Beispiel:

%Vor%

Das wird Ihnen natürlich nur dann nützlich sein, wenn Ihre Funktionen als Klassenmethoden und nicht als Instanzmethoden funktionieren. Ich füge nur den obigen Code hinzu, um zu veranschaulichen, dass Sie konstante Methodenzeiger haben können, solange der Betreff eine Kompilierzeitkonstante ist.

    
David Heffernan 15.06.2013, 09:16
quelle
2

Sie können Zeiger auf Methoden in Ihren Datensätzen speichern (diese sind zur Kompilierungszeit bekannt, daher ist es kein Problem, sie in einer const-Definition anzugeben):

%Vor%

Dann, wenn Sie fn von cmds[i] aufrufen müssen (ich nehme an, dass der Aufruf innerhalb derselben Klasse erfolgt, die die Methoden DoHelp und DoLoad definiert), schreiben Sie etwas wie:

%Vor%     
Inspired 15.06.2013 09:21
quelle

Tags und Links