Vererbung an zwei Klassen
-
Hallo, habe wohl was bei der Vererbung falsch verstanden:
Folgendes Szenario:
Habe drei verschiedene Klassen A,B und C wobei B und C jeweils von A erben sollen.
A ist grob wie folgt definiert:class A { public: A(std::string filename) { this->filename=filename; } ~A() { DOLOGGING(filename); } private: std::string filename; //+ andere log funktionen }B und C erben public von A, denn sie sollen loggen können.
In B und analog in C schreibe ich:class B :public A { B(blabla) :A("logB.txt")//in klasse C eben logC... {} ... }Ich dachte nun, das jede Klasse ihre eigene Logfile erhält, statt dessen hat nur eine von beiden eine, die andere gar keine, der Dekonstruktor von Basisklasse A wird auch nur ein einziges Mal aufgerufen.
Ich dache wenn Objekte von B und C dekonstruiert werden, würde als letztes der Dekonstruktor der Basisklasse aufgerufen werden?
Wieso passiert das nur einmal? Es scheint ja so, als würde insgesamt quasi nur eine Instanz von Klasse A erstellt(implizit bei Erstellen von Instanzen von B oder C) und die dekonstruiert werden, sobald eine Instanz von B oder C dekonstruiert wird?!
-
Zeig doch mal den Code, wo du die Objekte erstellst / nicht erstellst. Also ein reduziertes kompilierbares Beispiel.
-
Deine Nachfrage hat mich wissen lassen, das es prinzipiel nicht falsch ist, daher habe ich soeben nochmal nachgesehen und einen Ladefehler bemerkt, welcher verhindert, das überhaupt eine Instanz erzeugt wird. Kann dann zu, vielen Dank trotzdem
