这是思考智能指针和使用原始指针进行非所有权的正确方法吗?
class DisplayObject {
DisplayObject* Parent;
};
class DisplayObjectContainer: public DisplayObject {
std::vector<DisplayObject*> Children;
};
class Stage {
std::vector<std::unique_ptr<DisplayObject>> DisplayObjects;
};
使用
make_unique<DisplayObject>
或创建项目
make_unique<DisplayObjectContainer>
Stage 将拥有所有DisplayObject
类,但 aDisplayObjectContainer
将具有指向 Stage 拥有的对象的原始指针。
DisplayObject
还将有一个 Parent (可以是nullptr
)。
当我将项目添加到向量 ( DisplayObjects.back().get()
) 并大量使用std::move
这是使用智能指针和所有权的正确方法吗?