Array mit Zeigern auf Objekte



  • Hallo,
    ich möchte gerne verschiedene Objekte einer Klasse ("Haus") erzeugen. Dabei soll jedes dieser Objekte ein Array von Zeigern auf andere Objekte desselben Typs ("Häuser in der Nachbarschaft") enthalten. Wie kann so ein Array definieren? Ich habe es mal folgendermaßen gemacht:

    haus* nachbarn[];
    

    Weiß nicht, ob das zweckmäßig ist.
    Wie kann ich nun bei einer Methode (zB, falls a ein Haus ist, a.finde_das_aehnlichste_haus()) auf diese Häuser zugreifen?



  • nachbarn[i]->Methodenauruf();

    aber du könntest auch einfach std::vector benutzen



  • Da fehlt auf jeden Fall noch die Arraygröße 😉 Wenn du die dynamisch ändern willst, bleibt entweder new/delete oder ein STL-Container:

    //a:
    class Haus{
      Haus** Nachbarn;
    
      Haus(int n_nach):Nachbarn(new Haus*[n_nach])
      {
        for(int i=0;i<n_nach;++i)
        //initialisiere Nachbarn[i]
      }
    }
    
    //b:
    class Haus{
      std::verctor<Haus*> Nachbarn;
    
      Haus(int n_nach):Nachbarn(n_nach)
      {
        for(int i=0;i<n_nach;++i)
        //initialisiere Nachbarn[i]
      }
    }
    

    Zugreifen kannst du auf den i-ten Nachbarn in beiden Fällen mit "*Nachbarn[i]" (oder "Nachbarn[i]->Member")



  • Was genau bezweckt diese Einfügung im Konstruktor?

    Haus(int n_nach):Nachbarn(n_nach)
    


  • MatthiasK schrieb:

    Was genau bezweckt diese Einfügung im Konstruktor?

    Haus(int n_nach):Nachbarn(n_nach)
    

    Die ruft den Konstruktor des Members "Nachbarn" mit dem Parameter "n_nach" auf (Nachbarn ist ein STL-Vektor und hat einen int-Konstruktor - der entsprechend viele Werte reserviert).

    (schau mal in einem C++ Buch nach "Initialisierungsliste")


Anmelden zum Antworten