Hi David, Which version are you using ? I cannot reproduce this problem. Your program works OK for me. Note that to store a string in a TObjArray or any other ROOT container, you can use the class TObjString. This will be far more efficient than your class with multiple inheritance. Rene Brun David Chamont wrote: > > Hi rooters, > > A new version of my previous question, this time with a TObjArray. > I would like to understand why the program below does not work. > So to be able to collect in a TObjArray some non-TObject objects > (TString in the example below), I use a template which transform the > class T into a TObject via double inheritance. When I write and reread > the TObjArray, the program crash. Any idea ? > > David C. > > =================================================== > the file with the template > =================================================== > > #include <TObject.h> > > template <class T> > class RtObj : public TObject, public T > { > public: > RtObj() {} > RtObj( const T & val ) : T(val) {} > ClassDefT(RtObj,1) > } ; > > ClassDefT2(RtObj,T) > > ClassImpT(RtObj,T) > > =================================================== > the linkdef file > =================================================== > > #ifdef __CINT__ > > #pragma link off all globals; > #pragma link off all classes; > #pragma link off all functions; > > #pragma link C++ class RtObj<TString>+; > > #endif > > =================================================== > the main file > =================================================== > > int main() > { > // begin > TROOT rdummy("dummy","dummy") ; > > // write > TFile * file = new TFile("RtObj.root","recreate") ; > TObjArray array ; > array.AddLast( new RtObj<TString>("hello world") ) ; > array.Write("array",TObject::kSingleKey) ; > file->Close() ; > delete file ; > > // read > file = new TFile("RtObj.root","read") ; > TObjArray * parray = (TObjArray *)(file->Get("array")) ; > cout<<*((RtObj<TString> *)((*parray)[0]))<<endl ; > file->Close() ; > delete file ; > > // end > return 0 ; > }
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:48 MET