For template classes, you need to implement the classes in-place: i.e. the functions must all be implemented in the header file with the declaration of the source code.
This means that I'll have no .cpp for the given header? At least it's not something hard to do. Thanks :)
But what's the reason behind this?
Also, just out of curiosity, for my Car class what is better, to use string objects or to keep the current char pointers? Or this is more context-dependent?
Generally, unless you really need efficiency, and can prove that efficiency is an issue, using strings is better, as you are less likely to make mistakes, and its just easier to deal with - its also the 'C++' way of doing things.
As for why you need to do the moving of the templates, is due to the way that templates are managed by compilers. A template isn't actually a function, as the name implies, its a template of a function - i.e. it needs to be instantiated for each time you call it. So, when you call a template function, the compiler will see (for example) you are calling it with T as int, and if you don't already have one it will create a function that is your templated function, but replacing T with int and then it might inline it into your code. However, if it was implemented in a different source file, the compiler doesn't know how to implement the function... I hope this makes sense.