My SystemManager has a map of System classes, where each system is mapped to type systype
typedef string systype;
In the header file, this map is declared:
class SystemManager
{
    public:
        SystemManager();
        ~SystemManager();
        map<systype, System> systems;
        System* getSystemPointer(systype);
};
And I try to add a DrawSystem (a class derived from System) to my "systems map" in the constructor:
SystemManager::SystemManager()
{
    systems["Draw"] = DrawSystem();
}
This gives me the error:
cannot declare filed '
pair<systype, System>::second' to be of abstract type System
I can't figure out what is causing it.
Here are my System and DrawSystem classes in case that matters:
class System
{
    public:
        System();
        systype type;
        vector<cptype> args;
        virtual void update(vector<Cp*>) = 0; //= 0 is for pure virtual function
};
class DrawSystem : public System
{
    friend class Game; //allows to draw on render window
    public:
        DrawSystem();
        void update(vector<Cp*>);
};
 
     
     
    