Re: [ROOT] Root I/O and object deletion

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Apr 29 2003 - 17:04:24 MEST


Thomas,

In one case you call SetBit, in the other one you call ResetBit!!

Rene Brun

Thomas Bretz wrote:
> 
> Dear rooters,
> 
> here is a simplified example to illustrate my question: If I have a class
> 
> class A : public TObject {
>     TNamed *fNamed;
>     ~A() { if (TestBit(BIT(14)) delete fNamed; }
>     void SetName(const char *name)
>     { fNamed = new TNamed(name, ""); SetBit(BIT(14)); }
>     vodi SetName(TNamed *name) { fNamed = name; ResetBit(BIT(14)); }
>     ClassDef(A, 1)
> }
> 
> and now I create an instance of this class
> A a, b;
> a.SetName(new TNamed);
> b.SetName("NewName");
> 
> and write both objects to a file:
> a.Write("Obj1");
> b.Write("Obj2");
> 
> now I read this object into new objects:
> A c,d;
> c.Read("Obj1");
> d.Read("Obj2");
> 
> As I understand it, now both objects (c and d) have a newly allocated
> TNamed. But for one of the two objects BIT(14) is set and for one not.
> How can I make sure, that the destruction of the TNamed-data-member is
> done correctly in any case?
> 
> Thanks in advance,
> Thomas.



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET