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