Originariamente inviato da Xaratroom
Cmq int * secondo me va più che bene ...
Purtroppo no.
codice:
Gen a(10,20);
int* result = a.GetList(50);
delete result; // <-- chi dice che un int* sia un array?
Il rischio di un delete esplicito è troppo elevato. Se si vuole tenere un puntatore come valore di ritorno, allora deve essere specificato che deve essere distrutto al di fuori della classe, lasciando poi il distruttore vuoto.
Inoltre anche il tipo di delete deve essere documentato chiaramente. (delete o delete[] ?)
Si potrebbe essere tentati di inserire il puntatore in un std::auto_ptr per evitare memory leak a causa di eccezioni non previste, e lo std::auto_ptr serve per oggetti, non per array.
Non servirebbe nemmeno dichiarare il prototipo in questo modo:
codice:
const int *Gen::GetList(int n) const
Il delete verrebbe invocato comunque come prevede lo standard (se non ricordo male).
Poi ognuno è libero di fare come vuole ovviamente.