Zeiger Problem
-
Hallo Leute,
ich weis oder kapier einfach nicht warum folgender Aufruf nicht funktioniert:
(code abgeändert)class blume { public: blume() {strauch = NULL;} ~blume() {strauch = NULL;} inline void get_art(void){return strauch->art();} protected: Pflanzen* strauch; }; class Pflanzen { public: virtual void art(void) = 0; (...) }; class Baum , public Pflanzen { virtual void art(void) { std::cout "eiche";} }; class Gras, public Pflanzen { virtual void art(void) {std::cout "moos";} };
(was den inhalt angeht ist natürlich unlogisch das kann hier aber egal sein)
Kompilieren geht aber wenn ich das Prog starte stürzt es ab. (problem ist der aufruf return strauch->art())
Weis jemand einen Rat?
-
hallo,
da fehlt ein hauptptogramm
woher sollen wir wissen woran es abstürzt
aber ich kanns mir denken im konstruktor setzt du den strauch auf 0 und willst dann darauf zugreifen. initialisisere das ganze besser im konstruktor.
blume::blume(Pflanzen *p) { strauch = p; }
-
Das gehört ins C++ Forum, nicht ins C++/CLI Forum.
Simon
-
Kann man den Beitrag bitte verschieben??
-
helferlein schrieb:
(...) initialisisere das ganze besser im konstruktor. (...)
gibt es da noch eine Alternative? Ich würde ungern die Konstrukturen umschreiben
-
traceman schrieb:
gibt es da noch eine Alternative? Ich würde ungern die Konstrukturen umschreiben
Um es nochmal klarzustellen: Das Problem ist, dass strauch NULL ist. Belege strauch mit einem sinnvollen Objekt, egal wo (im Konstruktor ist natürlich am sinnvollsten).
-
jetzt klappts...hab objekt übergeben...danke!!