1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
typedef unsigned int GroupId; class BaseComponent { protected: GroupId getGroup(); private: friend class EntityManager; static GroupId group_id_counter_; }; template <typename T> class Component : public BaseComponent { };