I would like to use a template class to provide some common functionality to some child classes that are very similar. The only variation is the enumeration that each uses.
You cannot move definition of template function to separate source file.
There it wouldn't be compiled at all, because templates can't be compiled, only template instances can.
Your code in separate file isn't get compiled, that's why you actually have no definition for E_EnumerationBase. That's why you get linker error.
Just move all template code to your header.