Kindklassenkonstruktor wird nicht aufgerufen

Anbrix

Mitglied
Huhu zusammen ^.^

Folgendes Szenario:

Code:
class BaseClass {
public:
    BaseClass(int i);
    BaseClass();
    ~BaseClass();
};

BaseClass::BaseClass(int i){
    //iwelcher code
}

BaseClass::BaseClass(){

}

BaseClass::~BaseClass(){

}

class ChildClass : public BaseClass {
public:
    ChildClass();
    ~ChildClass();
};

ChildClass::ChildClass(){
    // code der hier steht wird nicht ausgeführt :S
}

ChildClass::~ChildClass(){

}

int main(){
    BaseClass baseobject(12345);
    return 0;
}

Nun, wie man den Kommentar im Code entnehmen kann, wird der Child-Konstruktor nicht aufgerufen (bei mir zumindest).
Daran scheitere ich jetzt schon ne Weile und google ist mir da auch nicht Freund ~.~
Weiß jemand die Lösung ?

Danke im Vorraus!
 
Was willst du denn jetzt wissen, wenn es dir bewusst ist ? :p

Ob es eine Möglichkeit gibt, dass der Kindkonstruktor UNTER DIESER ARCHITEKTUR aufgerufen wird ...

Was hat das mit Mehrfachvererbung zu tun ?

Wenn ich es umgekehrt (siehe Post von jsendrow) machen würde, wäre es Mehrfachvererbung ...


Edit:
Verzeihung, ich sehe gerade erst, dass ich nur eine Kindklasse in diesem Beispiel oben geschrieben habe, in meinem Projekt jedoch benutzen viele Klassen die selbe Basisklasse.
 
Zuletzt bearbeitet:
Hi.
Ob es eine Möglichkeit gibt, dass der Kindkonstruktor UNTER DIESER ARCHITEKTUR aufgerufen wird ...
Vererbung funktioniert (logischerweise) nur in eine Richtung, so wie in der Biologie auch.

Wie sollte denn beim Erstellen (bzw. sogar vor Fertigstellung) eines Elternteils gleich das Kind erstellt werden? :confused:
Wenn ich es umgekehrt (siehe Post von jsendrow) machen würde, wäre es Mehrfachvererbung ...
Das ist nicht das was gemeint war. Du mußt schon ein Kind erstellen wenn du eins haben willst.

Gruß
 
Hi.
Vererbung funktioniert (logischerweise) nur in eine Richtung, so wie in der Biologie auch.

Wie sollte denn beim Erstellen (bzw. sogar vor Fertigstellung) eines Elternteils gleich das Kind erstellt werden? :confused:

Gruß

Nunja ich hatte halt alles was ich brauchte, ich konnte in beide Richtungen zugreifen, von Child auf Base halt normal, und von Base auf Child per (Child*)this.
Hatte nun nur das Problem, dass der Kindkonstruktor vergessen wurde ... so bekam ich leckere RuntimeErrors wenn ich z.B. stl vector member nutzen wollte.

Nunja steig ich halt auf langweilige Zeiger um :S
Danke
 
Nunja ich hatte halt alles was ich brauchte, ich konnte in beide Richtungen zugreifen, von Child auf Base halt normal, und von Base auf Child per (Child*)this.
Das ist ein Scherz, oder?
Hatte nun nur das Problem, dass der Kindkonstruktor vergessen wurde ... so bekam ich leckere RuntimeErrors wenn ich z.B. stl vector member nutzen wollte.
Ich glaube du hast irgendwie das Konzept der Vererbung nicht ganz verstanden... und die Polymorphie vermutlich auch nicht (virtuelle Methoden).

Gruß
 
Das ist ein Scherz, oder?

Ich glaube du hast irgendwie das Konzept der Vererbung nicht ganz verstanden...

Man muss ja nicht alles so verwenden wie irgendwer irgendwann mal niedergeschrieben hat, vorallem wenns fehlerfrei funktioniert.

und die Polymorphie vermutlich auch nicht (virtuelle Methoden).

Gruß

Nunja ich kenn Polymophie aus ASM, was das jetzt jedoch spezifisch tolles bei Vererbung zu beachten gibt, jo hast Recht ...
 
Man muss ja nicht alles so verwenden wie irgendwer irgendwann mal niedergeschrieben hat
Prinzipiell richtig, allerdings sollte man dann schon einen guten Grund haben und wissen was man tut. Du hast uns gerade eindrucksvoll das Gegenteil bewiesen.

Wenn du in deinem System in irgendeiner Form unvermeidlich war, dann ist dein Klassendesign schlecht und du solltest nochmal drüber nachdenken. Es wäre evtl. auch keine schlechte Idee erstmal die Grundlagen zu lernen bevor du meinst alles anders machen zu müssen.

Gruß
 
Zurück