PDA

Visualizza la versione completa : [C++] Funzione che ritorna un puntatore double


Paulin
01-08-2007, 14:58
Ho una funzione che mi dovrà ritornare un puntatore ad un array dinamico multidimensionale con una dimensione non specificata in partenza, ma che andrò a determinare in runtime. La funzione è così scritta:




double *MyArray()
{

#define m 4
#define n 3

int l;

// Qui faccio qualcosa che mi detewrmina il valore di "l".

double (*Arr)[m][n];
Arr = new double [l][m][n];

// Qui assegno tutti gli elementi all'array

return Arr;
}

Il problema è che io non so come va scritto il tipo di ritorno di un puntatore come quello che ho appena dichiarato, infatti l'errore è questo:


: error C2440: 'return' : cannot convert from 'double (*)[4][3]' to 'double *'

Qualche suggerimento?

Ringrazio in anticipo

oregon
01-08-2007, 15:53
return((double *)Arr);

Paulin
01-08-2007, 18:32
Originariamente inviato da oregon
return((double *)Arr);

Sei un mito oregon, con questa scrittura funziona perfettamente, grazie al puntatore restituito dalla funzione riesco a invocare tutti gli elementi dell'array.

Colgo l'occasione per dissipare un altro dubbio dovuto alla mia inesperienza:

All'interno della funzione non posso deallocare la memoria dinamica:


delete [] Arr;

Perché così facendo avrò rilasciato la memoria prima di poterla utilizzare, potrò farlo allora nel corso del programma utilizzando il puntatore a cui avrò passato l'indirizzo dell'array (quello che riceve il valore di ritorno della funzione)? Ad esempio:


delete [] lastPointer;

In questo modo avrò rilasciato lostesso la memoria della mia array dinamica?

oregon
01-08-2007, 19:57
In questo modo avrò rilasciato lostesso la memoria della mia array dinamica?

Sì ...

Loading