Hi Fons, What do you think of the following routine... Chers. Jean-Eric //------------------------------------------------------------------------- ---/ #include <set> typedef std::set<void*> AddressBook; void SecureDelete(TList* aList) { AddressBook uniqueInstanceSet; //Address Container with unique instance pair<AddressBook::iterator,bool> rc; TIter next(aList); TObject* aObj; //referencer les addresses dans un set (une entree par adresse differente) while ( (aObj = next()) ) { rc = uniqueInstanceSet.insert((void*)aObj); if (rc.second) {// the objet has not been referenced so it can be deleted delete aObj; } }//eow //Use Clear with nodelete option to reset the List wo deletion of the objects //as they have been deleted in previous while loop. aList->Clear("nodelete"); } --On mercredi 4 juin 2003 21:33 +0200 Fons Rademakers <Fons.Rademakers@cern.ch> wrote: > Hi Jean-Eric, > > this cannot be done automatically, you have to make some add method > that first looks if the object is already in the list (like > list->FindObject(newObj)) and only add the method if FindObject() > returns 0. > > Cheers, Fons. > > > On Wed, 2003-06-04 at 16:05, Jean-Eric Campagne wrote: >> Hello, >> >> If I make add twice the same instance of an object in a TList, then at >> the Delete phase of the TList there is a crash for known reason. >> How, I can ask the TList to keep Unique Instance of an Object? >> >> Regards >> Jean-Eric Campagne >> >> ........................................................................ >> ... .LAL - IN2P3 - CNRS >> .LAL - B.P 34 - 91898 Orsay Cedex - France >> .Piece 108 >> .Tel +33 (0)1 64 46 84 29 >> .Fax +33 (0)1 64 46 83 97 >> ........................................................................ >> ... > -- > Org: CERN, European Laboratory for Particle Physics. > Mail: 1211 Geneve 23, Switzerland > E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 > WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7679480 > ........................................................................... .LAL - IN2P3 - CNRS .LAL - B.P 34 - 91898 Orsay Cedex - France .Piece 108 .Tel +33 (0)1 64 46 84 29 .Fax +33 (0)1 64 46 83 97 ...........................................................................
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET