Problem mit dyn. Feld
-
Folgendes Problem:
Ich habe in einer Headerdatei folgenden Typen definiert:
typedef int dyn_int_array_t;in meiner main.cpp eine Variable angelegt und übergebe diese an eine Funktion:
dyn_int_array_t int_array; readPowersFromTextFile(Dateiname, [B]int_array[/B], Exp);nun möchte ich in der Funktion das dynamische Feld erzeugen:
int readPowersFromTextFile(const char* filename, dyn_int_array_t& numbers, int& exp) { numbers = new dyn_int_array_t[ ]; }Nun erzeugt Letzteres folgenden Fehler:
"error C2440: '=': 'dyn_int_array_t *' kann nicht in 'dyn_int_array_t' konvertiert werden"
Wo steckt der Fehler?
-
Die Fehlermeldung sagt eigentlich alles.
numbersist vom Typdyn_int_array_t(alsoint), der Rückgabetyp vonnewist jedochdyn_int_array_t*, also ein Zeiger.
-
OK ..., was muss ich nun ändern um in der Funktion
readPowersFromTextFiledas Feldnumberszu erzeugen?
-
typedef int* dyn_int_array_t;
-
Naja, wie wärs wenn du einen Zeiger übergibst und keinen Adresse?
-
Wenn dann einen Doppelzeiger!
Aber mit dem angepassten Typedef dürft der Rest doch auch stimmen.
-
Wir wärs denn da gar nicht erst mit new und Zeigern anzufangen, sondern Container zu verwenden?

-
David_pb schrieb:
typedef int* dyn_int_array_t;Der Fehler besteht leider weiterhin.

-
dyn_int_array_t int_array; readPowersFromTextFile(Dateiname, [B]&int_array[/B], Exp); int readPowersFromTextFile(const char* filename, dyn_int_array_t *numbers, int& exp) { numbers = new dyn_int_array_t[ ]; }
-
oder, damit kein Speicherzugriffsfehler entsteht, int_array als Zeiger:
dyn_int_array_t *int_array; readPowersFromTextFile(Dateiname, [B]int_array[/B], Exp); int readPowersFromTextFile(const char* filename, dyn_int_array_t *numbers, int& exp) { numbers = new dyn_int_array_t[ ]; }
-
u_ser-l schrieb:
oder, damit kein Speicherzugriffsfehler entsteht, int_array als Zeiger:
dyn_int_array_t *int_array; readPowersFromTextFile(Dateiname, [B]int_array[/B], Exp); int readPowersFromTextFile(const char* filename, dyn_int_array_t *numbers, int& exp) { numbers = new dyn_int_array_t[ ]; }Danke, das funktioniert so weit.
So, in der Funktion
readPowersFromTextFilefülle ich jetzt das neuerstellte Feldnumbersund gehe wieder aus der Funktion raus. Damit sollte ja jetzt meinint_arraygefüllt sein, wenn ich jetzt aber in meiner main.cpp auf dasint_arrayzugreifen will meckert er rum das nicht drauf zugegriffen werden kann da es vorher nicht initialisiert wurde.Ich dachte das hätte ich gemacht, indem ich
numberserstellt habe oder sehe ich das falsch? (zumindestens sollte das der Sinn der Übung sein)