Methoden einer abgeleiteten Klasse aus der jeweiligen Basisklasse aufrufen?



  • Hallo zusammen!

    Ich bin C++ - Neuling und stehe im Zusammenhang mit einer Studienarbeit vor folgendem Problem:

    Ich müsste in dem Programm aus einer Methode einer Basisklasse, eine Methode der davon abgeleiteten Klasse aufrufen bzw. es wäre auch möglich, dass man in einer Methode der Basisklasse mit Objekten vom Typ der abgeleiteten Klasse arbeitet.

    Ist sowas grundsätzlich möglich? Wenn ja, kann mir jemand einen Tip geben, wie ich das angehen kann?

    Bin grad sehr frustriert... 😞



  • Hi,

    normalerweise macht man in der Basisklasse da eine rein virtuelle Funktion, die dann nur in abgeleiteten Klasse überladen wird. Die Basisklasse wird dadurch aber abstrakt, d.h. nicht mehr instanzierbar.

    class Base
    {
    public:
    virtual void foo() = 0;
    };
    
    class Derived : public Base
    {
    public:
    virtual void foo() {...}
    }
    

    Alternativ kann man die Basisklasse mit dynamic_cast<abgeleite_klasse>(Instanz_der_Basisklasse) für den jeweiligen Aufruf downcasten, was aber meistens nicht besonders schön ist.

    MfG Eisflamme



  • Herzlichen Dank für die Antwort! Ist zwar für diese spezielle Aufgabe nicht praktizierbar -die Klassen müssen instanzierbar sein-, dennoch für andere Aufgaben ein interessanter Aspekt!



  • ich denke du solltest die implementierung deiner klassen noch einmal überdenken. aus einer basisklasse eine abgeleitete klasse aufrufen zu wollen, macht nicht wirklich sinn. eine basisklasse implementiert nur grundlegende funktionen die in abgeleiteten klassen genutzt werden.

    ich war bisher noch nie in der verlegenheit so etwas machen zu müssen. was für ein problem willst du denn lösen?

    @mis2com

    wie rufst du bitte aus ner abstrakten funktion einer basisklasse die überladene funktion der abgeleiteten klasse auf?


Anmelden zum Antworten