Problem: Vererbung & Überschreibung
-
Folgende zwei Klassen habe ich:
class Bla { protected: void Rechne() { // ... berechne spezifisch für Bla } public: void MachWas() { Rechne(); // ... weiteres Zeug } }; class Blubb : public Bla { protected: void Rechne() { // neue Berechnung für Blubb } };In der Klasse Blubb überschreibe ich nur Rechne(), aber nicht MachWas();.
Wenn ich nun ein Objekt der Klasse Blubb anlege und die Methode MachWas aufrufe, so verwendet die Bla.Rechne(), anstatt Blubb.Rechne(), ich möchte aber natürlich, dass Blubb.Rechne() verwendet wird.
-
um zu überschreben musst du die methode in der basisklasse als virtual deklarieren
-
hola
dann solltest du in der Klasse Bla die Methode 'rechne' virtual machen.
Meep Meep
-
Ah, so war das. Danke!
-
Und mach den Destruktor der Basisklasse auch virtual, sonst gibt's Probleme beim Abbauen ner Klassenhierarchie (wenn du sie z.B. dynamisch allokiert hast).
MfG
GPC