Enclosed below is an example of simple class representing a YBOS (YBOS=Zebra') bank, which is derived from TObject and contains an array of integers of fixed length. For some reason the Streamer method generated by rootcint saves/restores only TObject and pretends to know nothing about the array itself... Is it the expected behaviour and one should write Streamer by hands in this case or i'm just missing a way to tell rootcint about my object correctly? Thanks a lot , Pasha -------------------------------------------------- Lrid.hh #ifndef __LRID_HH__ #define __LRID_HH__ #include "TObject.h" class YBOS_BANK; int const LRID_DATA_SIZE = 8; class LRID: public TObject { protected: Int_t fWord[LRID_DATA_SIZE]; public: LRID(); LRID(YBOS_BANK& bank); virtual ~LRID(); Int_t Word(int i) { return fWord[i]; } ClassDef(LRID,1) }; #ifdef __CINT__ #pragma link C++ class LRID; #endif #endif //__LRID_HH__ -------------------------------------------------- LinkDef.h #ifdef __CINT__ #pragma link off all globals; #pragma link off all classes; #pragma link off all functions; #endif ----------------------------------------------------------------------------- > rootcint -f lrid.cxx -c -I$ROOTSYS/include -I../include inc/LinkDef.h Lrid.hh Warning: Link requested for undefined class YBOS_BANK FILE: LINE:0 Class YBOS_BANK: Streamer() not declared Class YBOS_BANK: ShowMembers() not declared ********************** and here goes the output of rootcint (lrid.cxx) // // File generated by rootcint at Sat Oct 25 12:56:55 1997. // Do NOT change. Changes will be lost next time file is generated // #include "TBuffer.h" #include "TMemberInspector.h" #include "TError.h" //______________________________________________________________________________ TBuffer &operator>>(TBuffer &buf, LRID *&obj) { // Read a pointer to an object of class LRID. obj = (LRID *) buf.ReadObject(LRID::Class()); return buf; } //______________________________________________________________________________ void LRID::Streamer(TBuffer &R__b) { // Stream an object of class LRID. TObject::Streamer(R__b); } //______________________________________________________________________________ void LRID::ShowMembers(TMemberInspector &R__insp, char *R__parent) { // Inspect the data members of an object of class LRID. TClass *R__cl = LRID::IsA(); Int_t R__ncp = strlen(R__parent); R__insp.Inspect(R__cl, R__parent, "fWord[8]", fWord); TObject::ShowMembers(R__insp, R__parent); }
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:26:21 MET