kleines problem mit zeigern
-
Hi,
ich versuch hier schon die ganze zeit was ans laufen zu kriegen, aber es geht nicht so wies will#include "stdafx.h" #include <iostream> class A; class B; class A { private: B *b; public: void p(); A(); ~A(); }; class B { private: A *a; public: B(); ~B(); void p(); }; A::A() { b = new B; } A::~A() { delete b; } void A::p() { std::cout << "A::p()" << std::endl; b->p(); } B::B() { a = new A; } B::~B() { delete a; } void B::p() { std::cout << "B::p()" << std::endl; a->p(); } int main(int argc, char* argv[]) { A a; a.p(); return 0; }
das problem ist das es bei new abstürzt. aber warum?
ich könnte auch ne methode dafür schreiben die zeiger auf die jeweiligen klassen übergibt, will ich aber nicht. kann mir einer weiterhelfen bzw. sagen wieso das abstürzt? oder bin ich einfach blind, das ich den grund nicht seh?-problemo
-
ah...problem gesehn....lol bin ich blöd...die methoden rufen sich endlos gegenseitig auf ;P
-
hmm..daran lags doch nicht!
muss doch der konstruktor sein.
-
LOL nu hab ichs aber: die konstruktoren rufen sich ja auch endlos gegenseitig auf...
-
4 posts innerhalb von 5 minuten ;P das wird wohl rekord sein
-
also ich habs jetzt doch mit initialisierungsmethoden gemacht...war zwar nicht so geplant, aber es geht ansonsten nicht. ausser man würde beide als singletons implementieren. Zumindest kann ich mir sonst nicht vorstellen wie das gehen sollte...
code:
#include "stdafx.h" #include <iostream> class A; class B; class A { private: B *b; public: A(); void p(); void SetB(B* pb); }; class B { private: A *a; public: B(); void SetA(A* pa); void p(); }; void A::SetB(B* pb) { b = pb; } A::A() : b(NULL) { } void A::p() { std::cout << "A::p()" << std::endl; if(b!=NULL) b->p(); } B::B() : a(NULL) { } void B::p() { std::cout << "B::p()" << std::endl; } void B::SetA(A* pa) { a=pa; }
gibts irgendwas stilistisches dran zu meckern, oder isses ok so?
oder hättet ihr noch ne idee wie das sonst zu regeln wäre?mfg problemo
-
Hallo,
gibts irgendwas stilistisches dran zu meckern,
ja, ich finde die Klassen- und Methodennamen etwas misslungen.
-
hmm. ein echter kritikpunkt
war allerdings auch nur reine spielerei...
weisst du: ich hab sonst nix zu tun
-
CarstenJ schrieb:
Hallo,
gibts irgendwas stilistisches dran zu meckern,
ja, ich finde die Klassen- und Methodennamen etwas misslungen.
Tjaja...typisch Microsoft-Beispiel-Code...
-
Hmm...das einzige von MS is da die stdafx.h
der rest is copyright von mich
-
von mir heißt das