我很难理解独特指针的所有权。 任何人都可以解释如何将指针存储到集合中的唯一指针吗?独特的指针所有权
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删除之后 –