PDA

Visualizza la versione completa : [c++]passaggio di array multidimensionali


thesalien
28-11-2009, 00:00
salve a tutti,
qualcuno saprebbe dirmi se sia possibile dichiarare dei metodi che permettano il passaggio di array multidimensionali senza dichiarare la dimensione di tale array?

ad esempio qualcosa del tipo:
int foo (mytype ***) {
stuff
}

invece di
int foo (mytype[10][20][30]){
stuff
}

in quest'ultimo caso non viene copiato tutto l'array ma solo il puntatore a tale array multidimensionale giusto?

l'array che sto passando allocato sullo stack, non sull'heap

bye

oregon
28-11-2009, 00:20
Come hai allocato l'array in questione?

thesalien
28-11-2009, 00:29
questo era solo un esempio

io sto usando un array del tipo:

miotipo mioarray[50][50]

....
...

foo(mioarray)

oregon
28-11-2009, 00:36
In questo caso puoi passare l'array con

foo(miotipo a[50][50])

o

foo(miotipo a[][50])

oppure con

foo(miotipo *a)

ma in quest'ultimo caso passi l'indirizzo del primo elemento e te la devi cavare tu, con l'aritmetica dei puntatori, per accedere ai vari elementi.

thesalien
28-11-2009, 00:57
ciao,
quindi possibile usare anche l'ultimo caso??

proprio questo che mi da errori..
ho provato anche a mettere dei reference ma nisba.. sempre errori..

cannot convert parameter 2 from 'miaclasse [50][50]' to 'miaclasse **'

oregon
28-11-2009, 10:28
Non ti ho detto di usare un doppio puntatore ma un puntatore semplice ...

thesalien
28-11-2009, 11:35
stesso errore:
cannot convert parameter 2 from 'miaclasse [50][50]' to 'miaclasse *'

ed in pi:
syntax error : missing ',' before '*'

anche se non manca nessuna virgola..

oregon
28-11-2009, 11:42
Originariamente inviato da thesalien
stesso errore:
cannot convert parameter 2 from 'miaclasse [50][50]' to 'miaclasse *'

ed in pi:
syntax error : missing ',' before '*'

anche se non manca nessuna virgola..

Cioe' ? Quale codice hai scritto per chiamare la funzione ?

Ti avevo scritto

"... ma in quest'ultimo caso passi l'indirizzo del primo elemento ..."

thesalien
28-11-2009, 11:49
hai ragione sorry
chiamando:
foo(&miovettore[0][0]);

rimane l'errore della virgola che non mi spiego.. non manca nessuna virgola

oregon
28-11-2009, 11:53
Se mostri tutto il codice e indichi la riga in cui si manifesta l'errore (che il tuo compilatore sicuramente ti indica) ...

Loading