Re: [ROOT] TMemberInspector and constant data members

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Dec 03 2001 - 10:07:53 MET


Hi Gora,

You make a good point. I have modified TObject and TClass as you propose
in the development version in CVS.
Thanks for this suggestion.

Rene Brun

Gora Mohanty wrote:
> 
> Hello,
>   I am having a problem with using constant data members in classes that are
> then compiled into ROOT. The problem seems to be that the ShowMembers()
> function calls TMemberInspector::Inspect() with a pointer to the constant data
> member, while TMemberInspector::Inspect() is expecting a void* pointer, i.e.,
> a const void* cannot be converted into a void*. I have worked around this
> problem by overloading TMemberInspector::Inspect() with a version that does
> take a const void*, viz.,
>   virtual void Inspect(TClass *cl, const char *parent, const char *name,
>                        const void *addr) = 0;
> 
> I also had to modify TObject.cxx and TClass.cxx, that define classes deriving
> from TMemberInspector, so as to provide a definition for this pure virtual
> function. I have done this by simply calling the non-const version of Inspect
> with a const_cast, e.g., in TObject.cxx to the class TDumpMembers I have added
>    void Inspect(TClass *cl, const char *parent, const char *name,
>                 const void *addr) {
>      return Inspect( cl, parent, name, const_cast<void*>(addr) ); }
> Is there any problem in doing this? If not, could some such modification be
> done in future releases, so that I do not have  to do this each time? If it
> matters, I am using ROOT version 3.01.06 compiled with gcc3.0 on a SuSE Linux
> 7.1 box, but have also had the same problem with older versions of ROOT.
> 
> Regards,
> Gora



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:10 MET