如何管理指向其自身类型的容器的对象的内存?

时间:2019-04-06 19:14:57

标签: c++

class position final {
private:
    std::shared_ptr<std::unordered_map<position, int>> history;
    int x;
public:
    bool operator==(const position& other) const; // compares x, ignores history
    position(int);
    set(int);
}
position::set(int x_) { x=x_;}

position::position(int) {
    x=0;
    history.make_shared({*this,0});
}

我构造了一个位置对象,该对象创建指向新地图的智能指针。

复制位置时,复制将指向同一张地图。当没有位置指向此地图的左侧时,智能指针将在地图上调用其析构函数。

然后我可以初始化几个指向不同地图的位置,而不必担心内存管理。

作品中的扳手是我希望这张地图具有位置类型的键,但此段错误。

出了什么问题?

不知何故,地图被删除了,我最终试图将对象插入nullptr。

我觉得我唯一的选择是让历史超出对象封装范围或使用new。这两种方法都可以,但是我正在寻找更优雅的解决方案。

0 个答案:

没有答案