我很難理解獨特指針的所有權。 任何人都可以解釋如何將指針存儲到集合中的唯一指針嗎?獨特的指針所有權
typedef std::pair<SceneNode*, SceneNode*> Pair;
typedef std::unique_ptr<SceneNode> Ptr;
std::vector<Ptr> mChildren;
void SceneNode::checkSceneCollision(SceneNode& sceneGraph, std::set<Pair>& collisionPairs)
{
checkNodeCollision(sceneGraph, collisionPairs);
for(Ptr& child : sceneGraph.mChildren)
checkSceneCollision(*child, collisionPairs);
}
void SceneNode::checkNodeCollision(SceneNode& node, std::set<Pair>& collisionPairs)
{
if (this != &node && collision(*this, node))
collisionPairs.insert(std::minmax(this, &node));
for(Ptr& child : mChildren)
child->checkNodeCollision(node, collisionPairs);
}
這難道不是違抗的unique_ptr的含義是:從中說明了這個問題SFML遊戲開發本書
實例?因爲可以從集合中訪問實際的對象並對其進行修改。
@Cyber我想你在考慮'shared_ptr'? –
這是可以的,但是它取決於你確保你不通過常規指針訪問對象,在被unique_ptr刪除之後 –