I want a method which sets its argument, which is a reference to a `const char*' to a character string stored in the class. However, the rootcint produced code doesn't use `const' which leads to a compilation failure. Here is a sample class showing the problem: //-- blah.h -- class blah { public: blah(const char* str) : fData(str) {} void Get(const char*& s) const { s = fData; } private: const char* fData; }; //-- end of blah.h -- Using this Linkdef.h: //-- blahLinkdef.h -- #ifdef __CINT__ #pragma link off all globals; #pragma link off all classes; #pragma link off all functions; #pragma link C++ class blah; #endif // -- end of blahLinkdef.h -- and the following command to generate the dictionary: rootcint -f blahCint.cxx -c blah.h blahLinkdef.h and this one to compile: g++ -g -Wall -O -I$ROOTSYS/include -o blahCint.o -c blahCint.cxx I get the following compiler error (sorry for the long lines): blahCint.cxx: In function `int G__blah_Get_1_0(G__value *, const char *, G__param *, int)': blahCint.cxx:86: initializing non-const `const char *&' with `char *' will use a temporary blah.h:8: in passing argument 1 of `blah::Get(const char *&) const' The offending lines in blahCint.cxx are: static int G__blah_Get_1_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) { G__setnull(result7); ((const blah*)(G__getstructoffset()))->Get(libp->para[0].ref?*(char**)libp->para[0].ref:*(char**)(&G__Mlong(libp->para[0]))); return(1 || funcname || hash || result7 || libp) ; } Line 86 is the second one in the function, the one staring with ((const blah*)...). This is on Debian/GNU linux, ROOT 3.00/05 (from cvs), g++ 2.95.2 Am I doing something stupid or is rootcint? Thanks, -Brett.
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:38 MET