Pointer Übergabe von Funktion zu Funktion

Hallo!

Ich habe gerad ein dummes Problem und weiß leider nicht, wie ich es hinbekommen kann.

vector\* g1() {
 vector \*v = new vector;
 string s1 = "Hallo ", s2 = "du ", s3 = "da";
 v-\>push\_back(s1);
 v-\>push\_back(s2);
 v-\>push\_back(s3);
 cout \*v) {
 cout size() \*l1 = g1();
 g3(l1);
 system("PAUSE");
 return 0;
}

Mein Gedanke dabei war:
g1() erstellt einen vector von string mit Daten auf dem Heap.
Zurück liefert die Funktion die die Adresse, wo die Daten liegen.
diese Adresse weise ich einem Pointer zu und übergebe ihn der Funktion g3(), die einfach nur die Daten, die an der Stelle im Heap existieren, ausgeben soll.

Die Adressen, die zuerst in g3() ausgegeben werden, stimmen mit denen aus der Funktion g1() überein.
Aber wie komme ich dann an diese Werte?
Da bin ich leider etwas ratlos.

Grüße

Björn

Hiho,

hat das _so_ bei dir compiliert? (abgesehen von den headern und using std)

Mein Gedanke dabei war:
g1() erstellt einen vector von string mit Daten auf dem Heap.
Zurück liefert die Funktion die die Adresse, wo die Daten
liegen.
diese Adresse weise ich einem Pointer zu und übergebe ihn der
Funktion g3(), die einfach nur die Daten, die an der Stelle im
Heap existieren, ausgeben soll.

Die Adressen, die zuerst in g3() ausgegeben werden, stimmen
mit denen aus der Funktion g1() überein.
Aber wie komme ich dann an diese Werte?
Da bin ich leider etwas ratlos.

die addressen, die ausgegeben werden, sind aber nicht die addressen der strings (sondern werte die (vorrausgesetzt, das du ein array von vector übergeben würdest, der erste, zweite und dritte eintrag wären).
die strings würdest du in g1/g3 mit:

cout 
ausgeben (v dereferenzieren und dann mit dem []-operator zugreifen).

ich glaube aber, das der Zeitunterschied nicht so wichtig sein dürfte (bei mir ~7ms bei 10000 Aufrufen von g3(vector\*) und g4 (vector) )

mfg TLF

Mein Gedanke dabei war:
g1() erstellt einen vector von string mit Daten auf dem Heap.
Zurück liefert die Funktion die die Adresse, wo die Daten
liegen.
diese Adresse weise ich einem Pointer zu und übergebe ihn der
Funktion g3(), die einfach nur die Daten, die an der Stelle im
Heap existieren, ausgeben soll.

Gibt es irgendeinen vernünftigen Grund für dieses Gefummel? Warum definierst du nicht einfach ein main einen vector, der von g1 befüllt und von g3 witer bearbeitet wird und übergibst den per Referenz?

Besten Dank! (ot)
ohne text