Seg-Fault bei Konstruktor mit "new" (statt statisch) etc...
-
Hallo Gemeinde,
ich versuche hier gerade mir ein C++-Progrämmchen zusammen zu basteln.. Und das, wenns geht, ohne Seg-Fault..Hier mal ein Beispiel:
Ich habe 2 Klassen, die voneinander abhängen, aber auch zusammen in einer weiteren Klasse ihr Unwesen treiben..class A{ B *b; } class B{ A *a; } class C{ A *aDyn; B *bDyn; C(); }..HALT..
.....Kennt das jemand: Man kommt mit einem Problem hierher, versucht es zusammenzufassen und verständlich auszuführen, wobei dann die Ursache offensichtlich wird??....
Kurz gesagt: Hat sich erledigt
- Naja fast..Das war zwar nicht das eigentliche Problem, aber warum meckert der Kompilator eigentlich nicht, wenn ich auf Klassen-Vars zugreife, deren Klassen nur als Zeiger existieren (ohne init)??
Und noch eine kleine Frage: Wie nennt sich eigentlich der Teil im Konstruktor
D::D() : var1(bla), var2(blö){}nach dem ":" ??
Und würde man dynamische Variablen (varEDyn) ähnlich initialisieren? Also zB.D::D() : varEDyn(new E(wasAuchImmer)){}oder macht man das im Körper mit
D::D(){ varEDyn = new E(wasAuchImmer); }?
MfG
Glühbirne457
-
Das Ding nennt sich Initialisierungsliste und hat sogar einen eigenen Wikipedia-Artikel: http://de.wikipedia.org/wiki/Initialisierungsliste
Zu deiner 2. Frage: Ich würde es auch in der Initialisierungsliste machen, aber nicht mit rohen Pointern, sondern mit Smart-Pointern wie zum Beispiel der std::uniqe_ptr.
// header file #include <memory> class C{ std::unique_ptr<A> aDyn; std::unique_ptr<B> bDyn; C(); } // source file C::C() : aDyn(new A()) , bDyn(new B()) {}