Dynamische Arrays vom Typ TImage

Hallo liebe Experten!
Ich habe ein großes Problem und ich hoffe Ihr könnt mir weiterhelfen.
Ich versuche ein Array aus TImage Objekten zur Laufzeit zu erstellen.
Das Problem: TImage besitzt keinen Standart Konstruktor…
daher funktioniert
TImage * feld = new TImage[12];
nicht, da TImage einen Konstruktor braucht (owner)
TImage keinfeld = new TImage(this);
fuktioniert problemlos. Aus der Hilfe:
"Nur die Funktion operator new() kennt einen optionalen Initialisierer. Die Version zur Speicherreservierung für Arrays, operator new, akzeptiert keinen Initialisierer."
Meine Frage lautet also:
Wie kann ich ein dynamisches Array von diesem Typ erstellen.

Danke an alle Lesenden und Lösenden :o)

Jörg Nädele
http://come.to/yogibaer

Hallo Jörg,

TImage * feld = new TImage[12];

Wenn’s der Typ nicht tut, nimm den Pointer, würde ich sagen.

std::vector feld;

und dann einige Male

feld.push_back ( new TImage(blabla) );

Nur nachher Speicher Freigeben nicht mehr vergessen, das hier ist unmanaget.

HTH,

Chris

DANKE aber wie geb ich den Speicher wieder frei?
Hallo Chris,
danke ersteinmal!!
Meine Zusatzfarge, wie gebe ich den Speicher wieder frei kann ich das mit:
delete [] feld;
oder muss ich das anderst machen?

bis denn dann
Jörg
http://come.to/yogibaer

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Jörg,

Meine Zusatzfarge, wie gebe ich den Speicher wieder frei kann
ich das mit:
delete [] feld;
oder muss ich das anderst machen?

Das geht leider nicht, da die STL diese Methode für vector nicht überladen hat. Da hilt IMHO nur „for(std::vector ::iterator element = myvector.begin(); element != myvector.end(); element++) delete *element;“.

Mit „delete [] array;“ kannst du den Speicher wieder freigeben, den du dir _für das Array_ besorgt hast, aber nicht den für die Einträge besorgten Speicher.

Ich halte das aber auch für eine Lücke in der STL.

Chris

Danke!
Danke Chris,
so müsste es gehen :o)
bis denn dann

Jörg

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]