I'm pretty new to C++.  I'm trying to design a EntityManager system, and so far this is what I have:#ifndef ENTITY_MANAGER#define ENTITY_MANAGER#include Entity.h#include Airplane.h#include Runway.h#include Customer.h#include <unordered_map>class EntityManager{private:    typedef std::unordered_map<int, Entity*> EntityMap;    EntityMap entityMap;public:    /*    Gets an instance of the EntityManager    */    static EntityManager* instance();    /*    Creation and Deletion    */    /*    Registers an Entity    */    void registerEntity(Entity* entity)    {        entityMap.insert(std::pair<int, Entity*>(entity->getId(), entity));    }    /*    Removes an Entity by its ID    */    void removeEntity(int id)    {        entityMap.erase(id);    }    /*    Removes an Entity by its instance    */    void removeEntity(Entity* entity)    {        removeEntity(entity->getId());    }    /*    Gets an Entity by its id    */    Entity* getById(int id)    {        return entityMap.at(id);    }    /*    Gets all the Airplanes    */    std::set<Airplane*> getAirplanes()    {        std::set<Airplane*> result;        for (std::unordered_map<int, Entity*>::iterator it = entityMap.begin(); it != entityMap.end(); it++)        {            Entity* e = it->second;            Airplane* plane = dynamic_cast<Airplane*>(e);            if (plane)            {                result.insert(plane);            }        }        return result;    }    /*    Gets all the Runways    */    std::set<Runway*> getRunways()    {        std::set<Runway*> result;        for (std::unordered_map<int, Entity*>::iterator it = entityMap.begin(); it != entityMap.end(); it++)        {            Entity* e = it->second;            Runway* runway = dynamic_cast<Runway*>(e);            if (runway)            {                result.insert(runway);            }        }        return result;    }    /*    Gets all the Customers    */    std::set<Customer*> getCustomers()    {        std::set<Customer*> result;        for (std::unordered_map<int, Entity*>::iterator it = entityMap.begin(); it != entityMap.end(); it++)        {            Entity* e = it->second;            Customer* customer = dynamic_cast<Customer*>(e);            if (customer)            {                result.insert(customer);            }        }        return result;    }};#endifA little background:Entity is my base class, which handles assigning itself an id, etc.Airplane is a subclass of Entity, which has methods that describe its size, fuel, etcRunway is a subclass of Entity, which also has methods to describe its sizeCustomer is a subclass of Entity, which has methods describing its AI state, etcI'm looking for any help I can get in things like code correction and design flaws.
Is this a decent way to create an EntityManager?
c++;beginner