Dev (che è un IDE, non un compilatore) è vecchio e buggato, e viene fornito con una vecchia versione di MinGW; ti consiglio Code::Blocks che, se non erro, fornisce MinGW (g++) 4.5, che ha già un discreto supporto per il C++0x.
Dev (che è un IDE, non un compilatore) è vecchio e buggato, e viene fornito con una vecchia versione di MinGW; ti consiglio Code::Blocks che, se non erro, fornisce MinGW (g++) 4.5, che ha già un discreto supporto per il C++0x.
Amaro C++, il gusto pieno dell'undefined behavior.
Grazie del consiglio ancora, purtroppo devo prepararmi sul dev per motivi universitari, lavoro già come programmatore php da qualche tempo![]()
Cercherò di arrangiarmi con le soluzioni del vector e dell'heap, bene o male sono entrambe buone![]()
Comunque se l'array è di grandi dimensioni, ti conviene allocarlo dinamicamente, visto che usando std::vector o std::array, nel momento in cui verrà ritornato dalla funzione, l'array viene copiato.
Per es:
In questo modo crei un'array sicuro e soprattutto, se è di grandi dimensioni, verrà evitata la copia dell'intero array (come capiterebbe con std::vector o std::array).codice:int* crea_array (int size) { int* array = (int*) malloc(size*sizeof(int)); .... return array; }
In genere la copia di std::vector dovrebbe essere elisa per RVO e NRVO. Inoltre con il C++0x, grazie alla move-semantic, il problema non si porrà nemmeno più.
Se per intanto non ti fidi della *RVO basta passare il vector come parametro per riferimento; sicuramente è meglio di restituire puntatori in quella maniera.
Passare in giro puntatori "liberi" a roba da deallocare è una pessima idea, dovresti almeno incapsularlo in uno smart pointer, altrimenti la exception-safety va a farsi benedire.
Amaro C++, il gusto pieno dell'undefined behavior.