Hello, In the code below, there is a problem with rootcint generated code. union Value_t { Int_t IVal; //value when Int Float_t FVal; //value when Float }; class TBValue : public TObject { protected: Type_t fType; Value_t fValue; // value public: .... Value_t GetValue(){return fValue;} .... } With this code, the rootcint dictionnary seems to be correctly generated, but cannot be compiled (with ROOT 3.00/05 and egcs-2.91.66 under Linux RedHat). With the following command : rootcint -f TBDataBaseDict.C -c TBADCModule.h ...all my .h files ... TBProperty.h TBView.h TBDataBase_LinkDef.h; the compiler returns the following error : Dictionnary compilation : TBDataBaseDict.o generated/TBDataBaseDict.C: In function `int G__TBValue_GetValue_3_0(struct G__value *, const char *, struct G__param *, int)': generated/TBDataBaseDict.C:2196: `union Value_t' used where a `long int' was expected gmake: *** [TBDataBaseDict.o] Error 1 If I replace, in the source file, the return type of GetValue() by a reference to a Value_t, everything compiles successfully .... Value_t &GetValue(){return fValue;} .... So, my question is : I would like to be able to obtain a direct value from the union without having to use a reference. Is this possible or a normal limitation of CINT/ROOT. Thanks a lot David -- David GUEZ addresse : 15, rue Georges Clemenceau * mail: guez@ipno.in2p3.fr 91406 Orsay Cedex * tel : (+33) 1 69 15 51 39 Batiment 100 - Bureau 125 *
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:39 MET