Non è sempre tutto così semplice... se inizi ad avere oggetti ad ownership condivisa la questione diventa più complicata - o usi uno shared_ptr (disponibile solo nell'ultima revisione dello standard o in boost) o ti devi arrabattare in maniere poco simpatiche.Originariamente inviato da ramy89
La soluzione (almeno da parte mia) è sempre la classe RAII, ma non capisco dov'è il problema.Se uno vuole può sempre usare l' allocazione statica al posto di quella dinamica, per essere sicuro che un oggetto o un array di oggetti vengano distrutti fuori la scope di una funzione.C'è comunque libertà di scelta, se uno vuole fare le cose semplici le può fare.
O anche, se devi restituire un puntatore a qualcosa trasferendo l'ownership al chiamante, o usi un auto_ptr (attualmente deprecato) o uno unique_ptr, che però c'è solo in C++11 con la move semantic; e in tutto questo la sintassi si appesantisce non poco.
La GC è una soluzione "turn key" a tutto questo genere di problemi (anche se ne pone degli altri, ovvero la distruzione non deterministica degli oggetti, che in certi casi può essere un problema che va risolto manualmente).
Tip: prova le Qt.Se il C++ avesse il framework che ha Java![]()
![]()