I am developing a templated abstract class “filter” which I can use with “events” or “tracks”. The class implements a few functions and has one pure virtual function "accept(const Filtered & object); where Filtered is the template parameter. I have seen how some templated class are defined and implemented in root and STAR classes in particular. The cases I have seen use elementary types as the template parameter. Here, instead, I would like to use a user defined type (say MyStarTrack) as a template parameter so I can filter those kinds of tracks. The fact that I define the class as a template (with derived classes providing a specific/relevant implementation) means that I can adapt my code very quickly to another type of track (say AnAliceTrack).
The problem I encounter is that althought the code compiles, and gets properly loaded in root. It fails upon instantiation of a specific filter (derived from the Filter base class) and complains that the class to be instantiated is abstract. - I verified that all methods of the base class are in fact properly implemented. So it makes me think I am dealing with a cint dictionary issue.
Now - I realize that the C++ standard does not guarantee (pure) virtual public function should work for a templated class. (Are they even legal?) But somehow this works with gcc 3.2.3. So I was hoping this could also work in cint. Have others tried this and succeed?
Thanks in advance for the help!!!