Hi, I know this is just my ignorance... but I am trying to include a map inside a ROOT class and I am running into trouble. My search through roottalk has not provided me with enough details...seeing a full example would probably solve my problem - so if someone has some code they are willing to share - it would be greatly appreciated. I am using Root 3.02.07 on Windows. I have a class, which contains a map: class MyClass: public TObject { public: MyClass(); ~MyClass(); private: std::map<McParticle*,Double_t> m_energyItem; ClassDef(MyClass,1) }; Where McParticle is itself a class derived from TObject. In my MyLinkDef.h file I have: #ifdef __CINT__ #pragma link off all globals; #pragma link off all classes; #pragma link off all functions; #pragma link C++ class McParticle+; #pragma link C++ class map<McParticle*, Double_t>-!; #pragma link C++ class MyClass+; #endif Right now I get compiler errors, starting with: mcRootDataCint.h(62) : error C2143: syntax error : missing ';' before '<' for this line: /* STUB derived class for protected member access */ typedef map<McParticle*,double,less<McParticle*>,allocator<double> > G__maplEMcParticlemUcOdoublecOlesslEMcParticlemUgRcOallocatorlEdoublegRsPgR; Some questions: Would it be better to use double, rather than Double_t as the second type in the map? Does it matter? In the pragma statement, of the MyLinkDef.h file, I used "-!", per an example I saw in an old roottalk message... I also tried "!". It seems to me that I should allow the Streamer() method to be generated - as I thought it was no longer necessary to write your own streamer for relatively simple STL classes. Am I correct in assuming that it is not possible to use "+" with an STL class? Do I need to add anything else to the MyLinkDef.h file to make this work? Is it possible to use a typedef in my ROOT class to create more simple name for the map? Will that cause trouble for rootcint? Originally, I was using such a typedef, but removed it once I started to have trouble. Is there something I can read to tell me how to do this correctly? Thank you, Heather
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:48 MET