|I am not sure I understood your question but what you are trying to do is not really correct. You can't cast to
CList<CLock_data,CLock_data&>* from a
CList <CRepositoryData,CRepositoryData&> *. These are two different types (even if the class used for template arguments are parent/child).
A better approache would be to use polymorphism: instead of manipulating a list of CRepositoryData objects, simply manipulate a list of pointers to CRepositoryData objects. This way, the pointer can point to a CRepositoryData object or to a child object.
This has also another advantage: all the lists can be manipulated the same way (and you could maybe even reduce them to one single list).