Hi Stefan, there is already a Clear() in TObject. Just override it for your class. Of course, we then still have to call it from the TTree code, but it should be possible. -- Fons > On Thu, 28 Oct 1999, Fons Rademakers wrote: > > > this is called a destructor which can be explicitely called like: > > > > obj->~TObject(); > Hm, yes, as long as there is no need for different actions between really > deleting an object and just "clearing" it so it can be used again by a > Streamer for input. Take the case of a class containing a pointer to a > TClonesArray: > > class A : public TObject { > > public: > > A() { _array= new TClonesArray( "bla", 50 ); } > > virtual ~A() { delete _array; } > > virtual Clear() { _array->Clear(); } > > private: > > UInt_t _nent; // Number of entries in _array > TClonesArray* _array; // Array of objects of type bla > > ClassDef(A,1) > > } > > I don't want a static pointer to TClonesArray, because I want to have > several instances of A each holding a TClonesArray for IO of several lists > of objects called "bla". Before reading a new entry, I want to clear the > TClonesArray's, but at the end of reading the tree I may want to really > delete the As, including their TClonesArray's. > > Thus, I think there is a case for having a separate virtual function > "Clear()" to allow for clearing instead of deleting; if you accept the > idea of reusing top level objects in branches that is. > > cheers, Stefan > > ---Stefan Kluth---------------Lynen Fellow----------------|\--|\------- > - LBNL, MS 50A 2160 - phone: +1 510 495 2376 - |/ |/ - > - 1 Cyclotron Rd. - fax: +1 510 495 2957 - |\/\|\/\|' - > ---Berkeley, CA94720, USA-----e-mail: SKluth@lbl.gov------|/\/|/\/|---- > -- 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 7677910
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:41 MET