Array von eigenem Objekttyp in Klasse deklarieren und im Konstruktor ohne new initialisieren



  • Hallo,

    wie der Titel schon vermuten lässt, frag ich mich wie man ein Array von einem eigenen Objekttyp in einer Klasse erst als Membervariable deklariert (ohne bestimmte Größe) und dann im Konstruktor ohne new initialisiert - wenn das geht. Also im prinzip so (code ist natürlich falsch und funktioniert nicht, nur zur Veranschaulichung hier):

    ScrollableList.h:

    class ScrollableList {
    
    private:
    	ScrollableListElement list_elements[];
    
    	// [...]
    };
    

    ScrollableList.cpp:

    ScrollableList::ScrollableList()
    {
    	this->list_elements = ScrollableListElement[10];
    }
    

    oder geht sowas nur wenn man sich da selbst den speicher mit new holt?

    Grüße
    Lukas



  • Das geht nicht, weil in C++ die Grösse von statischen Arrays zur Compilezeit feststehen muss. Also entweder nimmst du new für dynamische Arrays - dann musst du aber Destruktor, Zuweisungsoperator und Kopierkonstruktor (die Grossen Drei) sauber implementieren - oder du nimmst STL-Container wie std::vector . Ich rate zu Letzterem.



  • Ok, vielen Dank!


Anmelden zum Antworten