我有一个Entity
由库定义的类,Registry
它是管理使用地图注册到它的实体的类。
我正在尝试做的事情:
//Registry Signature
void Registry::add(Entity* entity);
//my function (IGameEntity subclasses Entity)
void GameLogic::addEntity(shared_ptr<IGameEntity> entity, GameEntityId id) {
GameEntityId entityId = entity->getId();
gameEntities.push_back(entity);
Framework::Registry::instance()->add(entity); //<-- this doesn't work
}
我试图弄清楚如何处理这个问题,因为我保留了 shared_ptr,然后我将不得不传递一个指针。
另一件事是,如果注册表因某种原因被破坏,它将调用delete
地图中剩余的所有实体。
如果我通过entity
了它的工作原理,但我并没有完全掌握如果在weak_ptr上调用deleteweak_ptr<Entity>(entity)
会发生什么。Registry
如果我通过了当引用计数达到零或注册表试图删除它时会发生什么entity
。entity.get()