Länge eines Array mit Zeigern
-
Ich habe folge Funktion in einer Klasse:
TAlias **TAlias::readInstances(){ int lCount = 0; lCount = 7;// Wert wird nachher aus einer DB gelesen TAlias **lInstances = new TAlias *[lCount]; for(int i = 0; i < lCount; i++){ lInstances[i] = new TAlias(i + 1, "Test", "Test1"); } return lInstances; }Aus dem Hauptprogemm ruf ich dann das ganze wie folgt auf:
TAlias *lTest1; TAlias **lTest = lTest1->readInstances(lCon, ""); int laenge = sizeof(*lTest); for(int i = 0; i < laenge ; i++){ printf("%i %s\n", lTest[i]->getId(), lTest[i]->getAlias()); }In diesem Fall hat die Varibale laenge immer nur die Länge eines Zeigers. Wie kann ich aber die Grösse das Arrays herausfinden? ich steh momantan auf der Leitung.
p.S. Allen ein gutes neues Jahr :xmas2:
Gruss Minggi
-
Hallo
Gar nicht. C-Arrays auf dem HEap kennen ihre Größe nicht. Hast du nur einen Pointer auf das erste Element bekommst du die Anzahl der Eleemente nicht mehr raus. Du must als Rückgabe schon zusätzlich noch manuell die Anzahl der Elemente zurückgeben.
Oder besser gleich ordentliches elegantes und fehlerreduzierendes C++ schreiben und std::vector anstelle des rohen C-Arrays verwenden. Das kennt nämlich nicht nur die Anzahl seiner Elemente, sondern verwaltet auch den Speicher der Elemente automatisch. Genaueres siehe den Magazinartikel "STL-Container" hier im Forum. Und wenn du dann richtig mit C++ anfängst bitte auch std::cout anstelle von printf.bis bald
akari