[C++] passaggio di array
Salve,
vorrei trovare un modo per patchare una funzione.
Ho a disposione una funzione dichiarata come:
input è un array multidimensionale:
scrivo una seconda funzione:
tale funzione deve utilizzare gen() come ovviamente si vede il tipo di input è diverso, uno è un array bidimensionale, nel secondo caso solo monodimensionale.
Non riesco ad impostare correttamente tale "upcastig" senza fare seg_fault (ovviamente viene na schifezza, ma la funzione è così..):
idee?
vorrei trovare un modo per patchare una funzione.
Ho a disposione una funzione dichiarata come:
void gen(int** input);
input è un array multidimensionale:
int input[][];
scrivo una seconda funzione:
void mygen(int* input);
tale funzione deve utilizzare gen() come ovviamente si vede il tipo di input è diverso, uno è un array bidimensionale, nel secondo caso solo monodimensionale.
Non riesco ad impostare correttamente tale "upcastig" senza fare seg_fault (ovviamente viene na schifezza, ma la funzione è così..):
void mygen(int* input){ int** tem = new int*; *tem = input; gen(tem); }
idee?
Risposte
Ma a parte l'aspetto puramente sintattico, quale dovrebbe essere il significato di tale conversione? Che cosa stai insomma cercando di fare? Che cosa si aspetta la funzione gen e che cosa passi alla funzione mygen?
"apatriarca":
Ma a parte l'aspetto puramente sintattico, quale dovrebbe essere il significato di tale conversione? Che cosa stai insomma cercando di fare? Che cosa si aspetta la funzione gen e che cosa passi alla funzione mygen?
diciamo che in input di gen c'è una sequenza, mygen() serve per riutilizzare la stessa funzione ma solo per un solo elemento (che è un array monodimensionale) della sequenza (è possibile fare ciò per altri valori di controllo presenti in gen() ).
EDIT:
ok forse ho risolto.
void mygen(int *input){ gen(&input); }
La soluzione più corretta sembrerebbe in effetti quella. L'unica cosa che non capisco però è come fa la funzione gen a capire il numero di elementi in input.
ok, grazie della conferma 
bhè certo dubbio condivisibile.
La cui soluzione, sta nel fatto che la funzione è dichiarata un po' diversamente:

"apatriarca":
L'unica cosa che non capisco però è come fa la funzione gen a capire il numero di elementi in input.
bhè certo dubbio condivisibile.
La cui soluzione, sta nel fatto che la funzione è dichiarata un po' diversamente:
void gen(int** input,int size,....)

Lo chiedevo perché normalmente, quando la dimensione non viene passata, è necessario inserire qualche forma di terminatore (normalmente uno zero). Un po' quella che si fa con le stringhe insomma. Se questa fosse stata la rappresentazione scelta dalla funzione gen, sarebbe stato necessario creare un array di due elementi come segue:
void mygen(int *input) { int * arg[] = { &input, NULL }; return gen(arg); }