C++ (Qt)// создаем skeletonSkeleton * sk1 = new Skeleton("Skeleton 1"); // регистрируем его в менеджереscene->getSkeletonManager()->addSkeleton(sk1);
C++ (Qt)Skeleton * sk = scene->getSkeletonManager()->getSkeleton("Skeleton 1");scene->getSkeletonManager()->removeSkeleton("Skeleton 1");
C++ (Qt)scene->getSkeletonManager()->removeSkeleton("Skeleton 1");
C++ (Qt)typedef std::map<std::string, shared_ptr<Skeleton> > TMap;
C++ (Qt)Skeleton::~Skeleton( void ){ ... scene->getSkeletonManager()->takeSkeleton(this->getName());}
{ auto newSkeleton = std::make_shared<Skeleton>(); manager->addSkeleton(newSkeleton, "name");}{ auto skeleton = manager->getSkeleton("name"); manager->removeSkeleton("name"); // skeleton всё еще держит овнершип auto skeleton2 = manager->getSkeleton("name"); Q_ASSERT(skeleton == skeleton2); // true, манагер хранит вик на старый скелетон и вернет нам его}{ auto newSkeleton = std::make_shared<Skeleton>(); manager->addSkeleton(newSkeleton, "name"); // а вот тут засунули новый инстанс, можно ругаться, если вик ещё живой auto skeleton = manager->getSkeleton("name"); Q_ASSERT(skeleton == newSkeleton); // этот скелетон не равен тому, что был в предыдущем скопе}