Speicherplätze für Array-Elemente



  • Hallo!

    Ich habe eine Klasse, die eine Reihe von Elementen, welche alle eine gemeinsame abstrakte Basisklasse haben, verwaltet. Diese Klasse soll es erlauen Elemente hinzu zu fügen und zu suchen. Am besten sollte sie auch welche entfernen können, aber das brauche ich zur Zeit nicht.

    Jedenfalls müssen die Elemente ja irgendwo gespeichert werden, während ich sie mit dieser Klasse verwalte.

    Bislang nimmt diese Klasse referenzen auf existierende (und hoffentlich nicht out of scope gehende) Variablen entgegen und fügt diese Adressen in ein Array aus Adressen ein:

    bool insert(AbstractClass &element) {
        this->interes_array[letzte_position_plus1] = &element;
    }
    

    Nur müssen diese Variablen dann ja irgendwo anders gespeichert werden. Das würde ich aber gerne innerhalb der Instanz dieser Klasse machen. Die Werte, die eingegeben werden sollten kopiert und hinterlegt werden, unabhängig davon, was später mit dem Teil passiert, welches die Eingabe geliefert hat.

    Da die Elemente aber solche unterschiedlicher Klassen sind stellt mich das vor ein Problem. Ein Array mit der gemeinsamen Basisklasse kann ich nicht erstellen, da abstrakte Klassen nicht instantiiert werden können.

    Wei wer Rat?

    Grüße, pktm



  • std::vector?



  • Du musst Referenzen oder Zeiger speichern.

    Edit
    Alternativ:
    Biete z.B. eine Clone Methode an und speicher die neu erzeugte Klasse (später auf das Aufräumen achten):

    class Base
    {
      public: virtual Base* Clone() const=0;
    }
    class Subclass : pulbic Base
    {
      // kann auch Subclass* liefern
      public: virtual Base* Clone() const {return new Subclass(..parameter..);}
    }
    
    void Insert(Base* b)
    {
      // oder wie schon gesagt std::vector<Base*> (besser als ein pures array)
      array[index] = b->Clone(); 
    }
    


  • Ja, Vector darf ich leider nicht benutzen 😞


Log in to reply