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!!


Anmelden zum Antworten