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を保持しているので、これを処理する方法を理解しようとしています。その後、ポインターを渡す必要があります。
もう 1 つのことは、レジストリが何らかの理由で破壊された場合delete
、マップに残っているすべてのエンティティを呼び出すことです。
私が合格した場合entity
は機能しますが、weak_ptr で呼び出しが削除されたweak_ptr<Entity>(entity)
場合に何が起こるかという点で何が起こっているのかを完全には把握していません。Registry
そして、パスした場合、参照カウントentity
がentity.get()
ゼロに達するか、レジストリがそれを削除しようとするとどうなりますか。