PDA

Visualizza la versione completa : (Visual C++) passaggio array bidimensionale a funzione


piesal
08-10-2010, 12:40
Salve,
sono nuovo ed ho pronta una domanda alla quale non riesco a trovare risposta.
Sto completando un'applicazione in Visual C++ con Visual studio 2008.

Ho un array di int bidimensionale che devo passare ad una funzione di un'altra classe e non riesco nell'impresa.
In realtà il programma viene compilato ed eseguito regolarmente, solo che la funzione ricevente un solo elemento dell'array.

l'array l'ho definito come segue:
int myArray[10][2]={{1, 2},{3,4}};
definendolo di dimensione 10 anche se poi ne ho valorizzate solo le prime due.

la chiamata alla funzione:
myClass.nomeFunzione(myArray);

la definizione della funzione:
void myClass::nomeFunzione(int inAttay[10][2])

Se controllo con il debug, l'array myArray alla chiamata è ben valorizzato, mentre all'interno della funzione "nomeFunzione" è come se fosse di dimensioni [1][2] riportando i primi due valori dell'array trasmesso.

Ho cercato si essere semplice e chiaro non so se ci sono riuscito.

Ringrazio chiunque avesse qualche consiglio a riguardo.

Bloodxyz
09-10-2010, 22:10
Ciao!
Non sono un esperto di c++, lo sto studiando da poco però forse posso aiutarti.

Mi pare di aver letto nel libro che le funzioni non possono creare passaggi di array, forse è per questo che te ne legge soltanto il primo elemento.

pero' potresti provare a usare i puntatori:

void display(int *num)

quì una guida (http://programmazione.html.it/guide/lezione/1184/passaggio-di-array-a-funzioni/)

piesal
10-10-2010, 00:38
Ringrazio per la risposta.
quello evidenziato è un aspetto che ho provato a considerare, anche se inserendo "l'asterisco" prima della variabile sulla funzione chiamata, ricevo il seguente errore dal compilatore: error C2664: ....: cannot convert parameter 1 from 'int (*)[10][2]' to 'int *[][2]'
Ho provato anche ad inserire un "&" prima della variabile sulla chiamata, ma non lo compila ugualmente.
Ho visto anche la guida indicata, ma nell'esempio non mi sembra utilizzi l'asterisco...

Attendo nuove news
Grazie nuovamente

Loading