Using ROOT v3.05.00 I've noticed a strange problem when using templated classes containing STL vectors. Unless rootcint is passed a class which inherits from the template using the specified parameter. In my case the LinkDef.h file containing the lines: #pragma link C++ class PhysicsObject; #pragma link C++ class ObjectProcessor<PhysicsObject>; Where 'ObjectProcessor' is a template class containing an STL list pointers of the type of the template parameter (i.e. std::list<T*>). This generates the following ROOTCINT errors: Class allocator<PhysicsObject*>: Streamer() not declared Class allocator<PhysicsObject*>: ShowMembers() not declared Class allocator<PhysicsObject*>: Class_Name() and initialization object not declared Class list<PhysicsObject*,allocator<PhysicsObject*> >: Streamer() not declared Class list<PhysicsObject*,allocator<PhysicsObject*> >: ShowMembers() not declared Class list<PhysicsObject*,allocator<PhysicsObject*> >: Class_Name() and initialization object not declared Class list<PhysicsObject*,allocator<PhysicsObject*> >::iterator: Streamer() not declared Class list<PhysicsObject*,allocator<PhysicsObject*> >::iterator: ShowMembers() not declared Class list<PhysicsObject*,allocator<PhysicsObject*> >::reverse_iterator: Streamer() not declared Class list<PhysicsObject*,allocator<PhysicsObject*> >::reverse_iterator: ShowMembers() not declared However if I add the line: class Dummy001 : public ObjectProcessor<PhysicsObject> { }; at the start of the LinkDef.h file then all these errors go away. Similarly I have to include this line for each instance of the template that I want to create. This seems to be a bug... Roger
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:05 MET