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.
Enumerations can be template parameters in exactly the same way that ints can.
enum Enum { ALPHA, BETA };
template class Foo {
// ...
};
template <> void Foo :: foo () {
// specialise
}
class Bar : public Foo {
// OK
}
But you simply haven't provided a definition for E_EnumerationBase::E_EnumerationBase()
This isn't a problem with templates or inheritence. It's the same as if you written this:
struct Foo {
Foo ();
}
int main () {
Foo foo;
}