Hi Paulo, We are planning to introduce a new implementation of the STL 'streamers' later this summer. This problems should disappear then (i.e. no real support for pointer to stl containers.). In the mean time I recommend using a vector object rather than a pointer to a vector. Cheers, Philippe. -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Paulo Vitor Magacho da Silva Sent: Wednesday, June 25, 2003 2:31 PM To: Roottalk Subject: [ROOT] Vector stl pointer problem Hello, I am just starting with root, and I am trying to compile a code without using ACLiC, but I have a small problem. In the header file used to create a dicitionary (TC_RODFragment.h) I have : ... vector < UInt_t *> *Data_Fragments; ... When I run the rootcint to create the dictionary there is no problem. However inside the Streamer method I get : ... delete *Data_Fragments; *Data_Fragments = new vector<UInt_t*>; vector<UInt_t*> &R__stl = **Data_Fragments; R__stl.clear(); TClass *R__tcl1 = TBuffer::GetClass(typeid(unsigned int*)); int R__i, R__n; R__b >> R__n; R__stl.reserve(R__n); for (R__i = 0; R__i < R__n; R__i++) { unsigned int* R__t; R__b.StreamObject(&R__t,R__tcl1); R__stl.push_back(R__t); } ... However this causes an error when trying to compile. What I had to do is to change it by hand to, so I don't get any errors : ... delete Data_Fragments; Data_Fragments = new vector<UInt_t*>; vector<UInt_t*> &R__stl = *Data_Fragments; ... My question is, why did it create inside the Streamer method *Data_Fragments instead of Data_Fragments, I how can I fix it without have to edit the file myself ? Thanks in advance, Paulo da Silva -- Paulo Vitor Magacho da Silva Office: 40-R-D01 Tel.: (+41 22) 76 71.287/73.019 ATLAS / EP / CERN Fax.: (+41 22) 76 78.350 CH-1211 Geneve 23 - Suisse/Switzerland email: Paulo.Da.Silva@cern.ch
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET