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*>);
};