Alte virtuelle Funktion aufrufen



  • Hallo,
    ich möchte eine virtuelle Funktion der Basisklasse neu definieren, aber die Basisdefinition trotzdem nutzen.

    Beispiel:

    class CBase
    {
    	public:
    		virtual void TestVirtual() { cout << "CBase"; }
    };
    
    class CDerived : public CBase
    {
    	public:
    		virtual void TestVirtual() { cout << "CDerived"; }
    		void TestBase() { dynamic_cast<CBase*>(this)->TestVirtual(); }
    };
    
    int main()
    {
    	CDerived test;
    
    	test.TestVirtual(); // Gibt CDerived aus
    	test.TestBase();    // Gibt wieder CDerived aus
    
        return 0;
    }
    

    Leider wird mir beidesmal CDerived ausgegeben. Ist mein Vorhaben überhaupt möglich?

    MfG,
    Max



  • Statt Zeile 11: cBase::TestVirtual();



  • Perfekt! Danke!


Anmelden zum Antworten