Array[][] als Funktionsparameter
-
Hallo Forum,
ich habe diesen Thread:
http://www.c-plusplus.net/forum/viewtopic.php?t=89509&highlight=array+parameterzu dem Thema gelesen, komme aber trotzdem nicht ganz klar.
Folgende Funktionsdeklaration:
bool bFunktion(double **);und dann:
bool Klasse::bFunktion(double **array){...}führt beim Aufruf
double kkk3[8][8];
bool kkkk=bFunktion(kkk3);zur Fehlermeldung
"Konvertierung des Parameters 1 von 'double [8][8]' in 'double ** ' nicht moeglich".Was mache ich falsch?
-
Das steht doch Wort für Wort in der Fehlermeldung ;). Es gilt
double ** != double[][]
Du musst entweder ne andere Variable oder nen anderen Prototypen nehmen.
-
und wie sähe dieser Prototyp dann aus?
-
wie dein compiler es dir befiehlt
bool Klasse::bFunktion(double [8][8]){...}
-
Soweit ich weiß, ist T[n][n] als Funktionsparameter eigentlich T[n][] und das wiederum T[n]* oder so. Wenn du immer gleich große Arrays verwendest, kommst du mit einem typedef perfekt weg:
typedef double Map[8][8]; void foo(const Map& map); Map m; foo(m);
-
operator void schrieb:
Soweit ich weiß, ist T[n][n] als Funktionsparameter eigentlich T[n][] und das wiederum T[n]* oder so.
T[m][n] ist T[][n] ist T (*)[n].