Virtuelle Funktion geht nicht
-
cvcv schrieb:
Jungs, wo ist der virtuelle dtor?
Der ist zusammen mit den Membern einen heben gegangen.
-
SeppJ schrieb:
cvcv schrieb:
Jungs, wo ist der virtuelle dtor?
Der ist zusammen mit den Membern einen heben gegangen.
Dann hoffen wir mal, dass sie gleichzeitig wieder zurück kommen, und nicht etwa der arme dtor hinterher hinkt

-
cvcv schrieb:
SeppJ schrieb:
cvcv schrieb:
Jungs, wo ist der virtuelle dtor?
Der ist zusammen mit den Membern einen heben gegangen.
Dann hoffen wir mal, dass sie gleichzeitig wieder zurück kommen, und nicht etwa der arme dtor hinterher hinkt

Weil der arme dtor nicht gewohnt ist so viel zu heben, wird er auch in die Notaufnahme gebracht

-
Bob Wolfskin schrieb:
Hab das jetzt so gemacht :
Wer lesen kann ist klar im Vorteil.
Du musst schon die virtuelle Methode überschreiben, nicht die nicht-virtuelle. Aufrufen tust du aber die nicht-virtuelle (der Basisklasse, die wiederum die virtuelle intern aufruft).
In deinem Fall:
class Timing { protected: virtual void Update_() { } public: void Update() { cout << "Basisfunktionalität" << endl; Update_(); } virtual ~Timing() {} }; class b : public Timing { protected: void Update_() { cout << "Spezielle Funktionalität" << endl; } }; int main() { Timing * demo = new b(); demo->Update(); delete demo; }Bob Wolfskin schrieb:
Funktioniert immernoch nicht.Die Update() funktion in der Timing klasse wird immernoch nicht aufgerufen
Logisch...
Mein Ansatz ist hier ein anderer: Die Timing-Klasse bietet über Update eine Bsisfunktionalität an, und die interne virtuelle Methode Update_ dient den abgeleiteten Klassen für eine Ergänzung.
Zeus schrieb:
Weil der arme dtor nicht gewohnt ist so viel zu heben, wird er auch in die Notaufnahme gebracht

*Der kleine arme virtuelle dtor möchte in der Spielzeugabteilung abgeholt werden*

-
Oha, er wurde gefunden!