double Array zurückgeben | TypeCast problem
-
Hallo zusammen,
bin ziemlich frisch in der C++ Welt und stehe gerade vor einem Problem, wo ich nicht weiter weis. Ich will einfach ein paar Werte in ein Array einlesen und wieder ausgeben. Hier der Code:
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 matrix; //FEHLER !? Weiß aber nicht warum :confused: //return (double)matrix; // gleicher Fehler }Fehler:
error C2440: 'return' : 'double [3][3]' kann nicht in 'double' konvertiert werdenMeine Klasse sieht so aus:
class { private: int dim; double array[3][3]; public: double getArray(); void setArray(); }Hoffe einer von euch sieht den Fehler. Danke schonmal.
Gruß
Manda
-
Was um alles in der Welt returnst du da??
Die Variable matrix existiert ja gar nicht oO
-
Das ist doch eine sehr eindeutige Fehlermeldung.
matrix (wo ist das deklariert? sieht man in dem geposteten code nicht) ist vom Typ double [3][3].
Der Rückgabewert der Methode QuadMatrix::getArray() ist double.
double [3][3] kann nicht in double konvertiert werden.
-
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.