Über ein Array von Zeigern auf Objektmethoden zugreifen



  • class Fuhrpark
    {
    ...
    private:
    Fahrzeug *array[];
    ...
    }

    ...

    void Fuhrpark::fahrzeugHinzuf()
    {
    *array[menge] = Fahrzeug::Fahrzeug('B', 'R', menge);
    menge++;
    }

    ...

    Wir wollen über ein Array von Zeigern, die auf Objekte von Fahrzeug zeigen, auf diese Objekte zugreifen, deren Methoden ausführen etc... oben das entsprechende Codestück.
    Also praktisch als ob man direkt "Objekt.Methode();" eingeben würde ...
    Wie kann man das umsetzen ???

    Ciao und Danke schonmal im voraus ...



  • array[fahrzeugNr]->methode();
    

    wenn du einen zeiger auf ein objekt haben willst, dann mußt du new benutzen:

    void Fuhrpark::fahrzeugHinzuf() 
    { 
      array[menge] = new Fahrzeug('B', 'R', menge); 
      menge++; 
    }
    

    new erzeugt ein neues objekt und gibt einen zeiger darauf zurück. den muß du aber bei bedarf mit delete objZeiger wieder freigeben. die freigabe eines objekts geht bei erzeugen mit new nämlich nicht mehr automatisch.



  • ...und die Grösse des Array muss natürlich auch dynamisch verwaltet werden.
    Da dies mit einen "normalen" Array nicht so richtig komfortabel ist nimmt
    man üblicherweise std::vector<>...



  • Danke. Ich werde das gleich mal ausprobieren...


Anmelden zum Antworten