C++ entity component framework