RE: [ROOT] Rootcint barfage

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Sat Oct 19 2002 - 12:35:00 MEST


Also note that several compilers will correctly complain about "const"
being redundant in an argument of type "Int_t". These arguments are
passed by value and will never change:
TFileInfo(const char *my_name, const Int_t my_mode, const Int_t my_size,
const Int_t my_mtime)

Cheers, Fons.



On Fri, 2002-10-18 at 08:22, Rene Brun wrote:
> Hi Conrad,
> 
> Do:
> rootcint -f junk.cxx -c TFileInfo.h LinkDef.h
> g++ -c junk.cxx `root-config --cflags`
> 
> with LinkDef.h the file below
> //LinkDef.h
> #ifdef __CINT__
> 
> #pragma link off all globals;
> #pragma link off all classes;
> #pragma link off all functions;
> 
> 
> #pragma link C++ class TFileInfo+;
> 
> #endif
> //end LinkDef.h
> 
> However with your class, there is still a problem with
> the data member of type TString (would be the same with STL string).
> Remove the "const" specifier for this member for the time being.
> 
> Rene Brun
> 
> 
> On 17 Oct 2002, Conrad Steenberg wrote:
> 
> > Hi Philippe
> > 
> > Yes, sorry, this was with 3.03/09. 
> > 
> > Conrad
> > 
> > On Thu, 2002-10-17 at 14:13, Philippe Canal wrote:
> > > Hi Conrad,
> > > 
> > > We made change on how const data member were handle in ROOT 3.03/08.
> > > Please upgrade to a newer version and try against.
> > > 
> > > Cheers,
> > > Philippe.
> > > 
> > > PS.  Please remember to indicate the version of ROOT that you are using.
> > > 
> > > -----Original Message-----
> > > From: owner-roottalk@pcroot.cern.ch
> > > [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Conrad Steenberg
> > > Sent: Wednesday, October 16, 2002 10:42 AM
> > > To: ROOT mailing list
> > > Subject: [ROOT] Rootcint barfage
> > > 
> > > 
> > > Hi
> > > 
> > > I have a simple class that rootcint seems to have trouble with when
> > > creating a dictionary file:
> > > 
> > > class TFileInfo : public TObject {
> > > public:
> > >   const TString name;
> > >   const Int_t mode;
> > >   const Int_t size;
> > >   const Int_t mtime;
> > > 
> > >   TFileInfo();
> > >   TFileInfo(const char *my_name, const Int_t my_mode, const Int_t my_size,
> > > const Int_t my_mtime):
> > >   name(my_name),
> > >   mode(my_mode),
> > >   size(my_size),
> > >   mtime(my_mtime)
> > >   {}
> > >   virtual ~TFileInfo();
> > >   ClassDef (TFileInfo, 1)
> > > };
> > > 
> > > The error message is:
> > > 
> > > webfiledict.C: In method `void TFileInfo::Streamer (TBuffer &)':
> > > webfiledict.C:471: passing `const TString' as `this' argument of `void
> > > TString::Streamer (TBuffer &)' discards qualifiers
> > > webfiledict.C:472: could not convert `TString(this->TFileInfo::mode)'
> > > to `TString &'
> > > /opt/root/include/TString.h:349: in passing argument 2 of `operator>>
> > > (TBuffer &, TString &)'
> > > webfiledict.C:473: could not convert `TString(this->TFileInfo::size)'
> > > to `TString &'
> > > /opt/root/include/TString.h:349: in passing argument 2 of `operator>>
> > > (TBuffer &, TString &)'
> > > webfiledict.C:474: could not convert `TString(this->TFileInfo::mtime)'
> > > to `TString &'
> > > /opt/root/include/TString.h:349: in passing argument 2 of `operator>>
> > > (TBuffer &, TString &)'
> > > webfiledict.C:479: passing `const TString' as `this' argument of `void
> > > TString::Streamer (TBuffer &)' discards qualifiers
> > > webfiledict.C: In method `void TFileInfo::ShowMembers (TMemberInspector
> > > &, char *)':
> > > webfiledict.C:496: passing `const TString' as `this' argument of `void
> > > TString::ShowMembers (TMemberInspector &, char *)' discards qualifiers
> > > 
> > > If I remove the const qualifiers the dictionary compiles fine.
> > > 
> > > Regards
> > > 
> > > Conrad
> > > 
> > > --
> > > *-----------------------------------------*
> > > | Conrad Steenberg                        |
> > > | Caltech, Mail Code 356-48               |
> > > | Pasadena, CA, 91125                     |
> > > | e-mail: conrad@hep.caltech.edu          |
> > > | Tel: (626) 395-8758                     |
> > > *-----------------------------------------*
> > > 
> > > 
> > -- 
> > *-----------------------------------------*
> > | Conrad Steenberg                        |
> > | Caltech, Mail Code 356-48               |
> > | Pasadena, CA, 91125                     |
> > | e-mail: conrad@hep.caltech.edu          |
> > | Tel: (626) 395-8758                     |
> > *-----------------------------------------*
> > 
-- 
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



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:15 MET