[ROOT] CINT problem with std::vector

From: Sean Kelly (kelly@nevis1.nevis.columbia.edu)
Date: Tue Jan 08 2002 - 00:18:21 MET


Dear ROOT'ers

I have followed a few STL ROOT I/O threads on the web
but didn't see a clear answer to the following type 
problem.  I am running  3.02/06 redhat release 
2.2.19-6.2.1smp. 

I have defined a simple class that has an STL vector
as a data memeber.  In compiled code it is possible
to write and then read back the object without any
problems with a split level that puts the stl vector
in its own branch.

I have noticed the following.

1) MakeClass does not generated the necessary member
   declarations and Branch calls for the vector.

2) I put these in by hand and everything works fine
   in compiled code

3) CINT chokes on the vector member functions 

I have tarred up my test project and one can reproduce
the successfull (failure) mode by typing.

make
./run_test
./run_readback
root 
root [0] .L run_readback.C
root [1] main()

The output from the failed mode is shown below.

======> EVENT:1
 x               = 1.000000
 y               = 10.000000
 z               = 100.000000
 q               = 1000.000000
 stl_vector      = printing kStreamer case (500)
Error: Can't call vector<int,__malloc_alloc_template<0> >::size() in
current scope FILE:read_back.h LINE:142
Possible candidates are...
filename       line:size busy function type and name  (in
vector<int,__malloc_alloc_template<0> >)
Error: << Illegal operator for pointer 3 FILE:read_back.h LINE:142
*** Interpreter error recovered ***

thanks for any help

Sean 



+-------------------------------------------------------------------------+
|| Sean Kelly                    EMAIL:  kelly@nevis.columbia.edu        ||
|| Columbia University           WWW:    www.nevis.columbia.edu/~kelly   ||
||                               PHONE: (914) 591 - 2840 (NEVIS)         ||
||                               PHONE: (212) 854 - 5275 (CAMPUS)        ||
||                               PHONE: (646) 281 - 5282 (MOBILE)        ||
||                               FAX:   (212) 854 - 3379                 ||
+-------------------------------------------------------------------------+





This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:37 MET