#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

struct Entity;
static std::vector<Entity*> entities;

struct Entity
{    
    std::string entityName;
    
    Entity(const std::string &name) : entityName(name)
    {
        entities.push_back(this);
    }

    Entity(const Entity &src)
        : Entity(src.entityName)
    {
    }

    ~Entity()
    {
        auto iter = std::find(entities.begin(), entities.end(), this);
        if (iter != entities.end())
            entities.erase(iter);
    }

    void Draw()
    {
        // do drawing things
        std::cout << "drawing " << entityName << " ..." << std::endl;
    }
};

Entity player("player");
Entity enemy("enemy");

void renderEntities()
{
    for (auto *entity : entities)
    {
        entity->Draw();
    }
}

int main()
{
    renderEntities();
	return 0;
}