Kann "abgeleitet" nicht in seine private Basisklasse "base" [duplizieren] umwandeln

8

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%     
user2771729 04.03.2015, 10:13
quelle

2 Antworten

19

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%     
TartanLlama 04.03.2015 10:16
quelle
3

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).

    
John Zwinck 04.03.2015 10:17
quelle

Tags und Links