Konstruktoren und new [] (c++)

Fragen zu allen anderen Programmiersprachen.
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Konstruktoren und new [] (c++)

Beitrag 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?
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

Beitrag 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...
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Tibor
Beiträge: 42
Registriert: 29.08.2004 03:25
Wohnort: Mittelerde, südlich der großen Grasplantagen

Beitrag 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.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag 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();
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Antworten