Pointer auf Methode? Wie?
-
Hey, wie in meinem Betreff steht bräuchte ich Hilfe bei pointer auf Klassenfunktionen.
Allgemein möchte ich folgendes machen:
Ich habe ein Klasse A-Klasse, welche neben ein paar Variablen auch zwei Funktionen hat, mit welchen man natürlich mit den Variablen arbeiten kann.
Bsp:
datei A-Klasse.hclass A-Klasse{ public: (...) void destroy_A(void); /*Kein Destruktor! }
Dann habe ich eine zweite Klasse B-Klasse. Diese Klasse B-Klasse besitzt unter anderem einen Pointer auf die Klasse A-Klasse und soll einen Pointer auf die Funktion destroy_A haben
Bsp:
B-Klasse.h
class B-Klasse{ public: A-Klasse* next_class; (...) ("Hier nun der Pointer, der auf destroy_A zeigen soll, aber hier noch nicht implementiert werden soll") void destroy_B(void); }
Datei B-Klasse.cpp implementiert:
void destroy_B(void){ (Pointer auf destroy_A) = destroy_A; .... }
Ich hoffe, ihr versteht, was ich generell machen will, nun das eigentliche Problem: wie muss ich 1. den Pointer definieren und 2. die Implementierung schreiben? Ich kriege das einfach nicht heraus und finde im Internet nichts brauchbares und das macht mich noch verrückt
Danke für eure Hilfe, falls was unklar ist, einfach fragen
-
Deklaration: void (A::*ptr) ();
Aufruf: next_class->*ptr();
Was die Implementierung angeht: Stichwort PIMPL?
-
Nathan schrieb:
Aufruf: next_class->*ptr();
Klammern nicht vergessen:
(next_class->*ptr)();
-
Danke für die schnelle Antwort, aber PIMPL sagt mir gar nichts
-
pimpl idiom (= pointer to implementation)
das kann man nachlesen.