Array von CObjecten erweitern!
-
Hallo,
kann ich ein Array von CObjecten das ich mit z.B. 100 initialisiert habe, erweitern, auf 200 oder eine andere Grösse??CMyObject myOb[100]; // CMyObject ist von Typ CObject // hier myOb erweitern auf 200!lg
pixel
-
pixel schrieb:
Hallo,
kann ich ein Array von CObjecten das ich mit z.B. 100 initialisiert habe, erweitern, auf 200 oder eine andere Grösse??CMyObject myOb[100]; // CMyObject ist von Typ CObject // hier myOb erweitern auf 200!lg
pixelGar nicht. Arrays sind in der Größte festgelegt. Entweder du allokierst es dynamisch mit new [] und löschst es mit delete [] oder (besser) du verwendest die Container der STL, wie z.B. std::vector, den kannst du über std::vector::resize in der Größe anpassen.
MfG
GPC
-
Hi,
danke für die schnelle Antwort!lg
pixel
-
hi,
ok, ich würde auch ohne dies auskommen, aber ich muß das Array irgendwie zurückgeben, an ein anderes, mit return oder ähnliches!Ich hab das so probiert:
// Globaler vector der den Inhalt aufnehmen soll CVector* globalVector; int sort(CMapStringToOb& cMapStringToOb) { int n = cMapStringToOb.GetCount(); CVector* vector = new CVector[n]; // dieser Vector muß zurückgegeben werden /* jetzt wird in einer schleife der vector mit den inhalten aus der cMapStringToObject gefüllt und dann sortiert */ while(p != NULL) { cMapStringToOb.GetNextAssoc(p, cstring, (CObject*&) cObject); vector[i].cstring = cstring; vector[i].csname = cObject->csname; //myGlobalVector[i].csUrl = (CString&)csUrlTmp; i++; } // nach dem füllen, wird der vector hier sortiert mit qsort(); qsort(vector, n, sizeof(CVector), sort_by_string); // wie den vector zurückgeben ohne Fehler? globalVector = vector; // bis hier ist ok, globalVector hat den sortierten inhalt aus vector delete[] vector; // hier verliert auch der globaler Vector(globalVector) die Daten! return 0; }wie kann ich den vector übergeben das bei delete die inhalte nicht verloren gehen??

lg
pixel
-
Lass das delete[] an dieser Stelle weg. Du solltest delete erst dann aufrufen, wenn du den benutzten Speicher nicht mehr benötigst (das heißt in deinem Fall vermutlich: irgendwo im Hauptprogramm).
PS: Eine bessere Lösung wäre es hier übrigens, einen std::vector zu verwenden (oder zumindest einen Smart-Pointer ala boost::shared_array).