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