Seite 1 von 1

Konstruktoren und new [] (c++)

Verfasst: 21.09.2007 18:21
von Kekskiller
Hi Leute,

Ich bin schwer am Überlegen, wie ich es hinkriege, ein Array von Objekten mit Parameter-behafteten Konstruktoren mittels new-Operator zu erstellen.
Sachen in dieser Art und Weise:

Code: Alles auswählen

x = new ll::list* [s->w] (sizeof(shape*));
werden von meinem Dev-C++-Compiler nach "ISO C++" (blabla) untersagt -> 0 Compilierung (mal wieder).
Der Versuch einer im nachhinein die Konstruktoren aufrufenden Schleife scheitert auch, angeblich wird das Objekt/die Klasse dann falsch genutzt:

Code: Alles auswählen

l->list(sizeof(shape*))
Sprich, ich kann den Konstruktor im Nachhinein nicht mehr aufrufen...

Ist es nicht möglich, die Konstruktoren mit Parametern per new / im Nachhinein aufzurufen, oder ist es doch ein Fehler an meiner Objekt-Verwendung?

Verfasst: 25.10.2007 20:42
von Maurizio555
Hallo!
Ich kenne mich in C++ nicht aus, ich programmiere eher in C#.
Trotzdem weiss ich, daß ein Konstruktor automatisch bei der Instanzierung des Objektes aufgerufen wird.
Ein erneutes Aufrufen auf ein bestehendes Objekt ist NICHT möglich, weder in C# noch in C++
Ein Konstruktor ist nicht mit einer Methode namens "new" zu verwechseln...

Verfasst: 25.10.2007 23:01
von Tibor
Erstelle ein Array mit Zeigern vom Typ deiner Objekte.
Erstelle die Objekte alle einzeln mit new.
Oder du musst die Objekte rein kopieren.
Geht nicht anders.

Verfasst: 26.10.2007 00:01
von ZeHa
Jepp, so würd ich es auch machen. Die Liste beinhaltet ja nur Pointer, und erst ein "new" erstellt das tatsächliche Objekt und gibt die Adresse zurück. Daher müßte das hier eigentlich funzen:

Code: Alles auswählen

class Test;

Test* list[256];

for(int i=0; i<256; i++)
    list[i] = new Test();