Ich stoße auf einen Fehler, wenn ich versuche, ein Objekt zu erzeugen, das von einer Klasse erbt, die von einer Klasse erbt, die reine virtuelle Funktionen definiert. Ich bin mir nicht sicher, was falsch ist. Ich weiß, dass ich die reinen virtuellen Funktionen in meiner abgeleiteten Klasse überschreiben muss, aber es funktioniert nicht. Ich möchte nur die Funktion in meiner ProduceItem-Klasse und nicht meine Sellerie-Klasse überschreiben, weil ich möchte, dass die Sellerie-Klasse die überschriebenen Methoden von ProduceItem erbt.
Im Hauptmenü:
%Vor%ProduceItem Header-Datei:
%Vor%ProduceItem.cpp-Datei:
%Vor%Sellerie Header-Datei:
%Vor%Sellerie.cpp-Datei:
%Vor% Sie verwenden private Vererbung hier: class Celery : ProduceItem
. Die Standardvererbungsebene für class
es ist private
.
Ändern Sie es in class Celery : public ProduceItem
Beachten Sie, dass Sie beim Löschen dieses Zeigers Speicher verlieren, da Sie keine virtuellen Destruktoren haben. Fügen Sie Ihren Klassen einfach solche Definitionen hinzu:
%Vor%Die Vererbung von Klassen ist standardmäßig privat. Normalerweise und in Ihrem Fall möchten Sie öffentliche Vererbung. Also:
%Vor% Und ähnlich auf class ProduceItem
.
Beachten Sie, dass die Vererbung für Strukturen standardmäßig öffentlich ist (Sie können struct Foo : private Bar
sagen, wenn Sie möchten).
Tags und Links c++ inheritance