double Array zurückgeben | TypeCast problem
-
Sorry, (copy&paste) Fehler.
Die Variable heist array!
So etwa:double QuadMatrix::getArray() { for(int i=0; i<getDimension(); i++) { cout << "|"; for(int j=0; j<getDimension(); j++) { cout << " " << array[i][j] ; } cout << " |" << endl; } return array; //FEHLER !? Weiß aber nicht warum :confused: //return (double)matrix; // gleicher Fehler }Mit int als Typ geht es aber.
-
Deine Matrix besteht aus einem zweidimensionalen Feld von doubles. Die Funktion gibt aber nur genau ein double zurück. Der Rückgabewert deiner Funktion passt also nicht.
Die Konvertierung in int macht ganz sicher nicht das, was du willst...
-
Das mit "int" meinte ich, wenn ich das array vom Typ int habe und die Funktion auch als return Wert "int" nehme, dann funktioniert es.
Er macht irgendwie beim double Probleme.So etwa: int array[3][3];
Funktion: int QuadMatrix::getMatrix() { ... return (int)array; }Dann scheints zu gehen.
-
MandaJohn schrieb:
Mit int als Typ geht es aber.
Dann gibts du eine Adresse zurück. Ich glaube nicht, dass du es das ist was du möchtest. Weisst du überhaupt was du zurückgeben möchtest?
-
Ich möchte jetzt einfach nur das array mit double Werte füllen und wieder zurückgeben. Deswegen hatte ich return Typ double genommen.
Nur stecke ich gerade genau an dem Punkt. Es ist nur zum Üben gedacht.Hast du sonst eine Idee, wie ich ein double array zurückgeben kann?
-
double** QuadMatrix::getArray()
-
Du tust dich anscheinend schwer mit Arrays als Rückgabewert und das ist auch nicht verwunderlich, da die Übergabe von Arrays in C anders funktioniert als die von anderen Typen. Wenn du eine anfängerfreundlichere Variante suchst, solltest du dir mal die STL-Container angucken, beispielsweise std::vector. Da läuft die Übergabe von Werten genauso wie man es intuitiv erwartet.
-
Ok, danke erstmal. Ich probiers mal.
Gruß
Manda
-
Und verwende keine C-Casts wie
(int) array, solange du nicht genau weisst, was du tust! (und das weisst du nicht). Verwende stattdessen
static_cast, das wird dich vor vielen Fehlern bewahren. Hier wäre es zum Beispiel nicht möglich gewesen, einfach eine stille Konvertierung in die Adresse vorzunehmen.static_cast<int>(array) // Compilerfehler
-
Ok, werd in Zukunft drauf achten.
Danke dir.