Based on only the code from the question, I see CGameModule missing definitions for the following virtual methods:
- CDasherModule::GetID
- CDasherModule::SetID
- CDasherModule::GetType
- CDasherModule::GetName
- CDasherComponent::HandleEvent (declared but not defined in CGameModule)
Also note that the virtual keyword is not required on virtual method overrides, and in fact is generally discouraged because it could lead to accidental creation of a new virtual function if the signatures don't perfectly match. Modern C++ (since C++11) prefers use of the override keyword to make this relationship explicit. https://en.cppreference.com/w/cpp/language/override