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.h

    class 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?


  • Mod

    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.


Log in to reply