#pragma once #include class EntityManager; class EntityView; class EntityMemoryPool; class Entity { public: friend class EntityManager; friend class EntityView; friend class EntityMemoryPool; Entity() = delete; Entity(EntityIndex); public: template bool hasComponent() const; template T& getComponent() const; template void addComponent(const T&); size_t id() const; Tag tag() const; bool isAlive() const; private: EntityIndex m_index; };