1

最近,我决定是时候深入研究智能指针了。我读到了不同的类型(独特的、共享的、弱的),但我不确定一件事。

假设我有一个班级Player和一个GameMap班级。这些类的内容与下一部分无关。我还有一个Engine类,它表示将包含我的游戏主要组件的对象,如下所示:

class Engine {
public:
    Engine();
    ~Engine();
private:
    std::unique_ptr<Player> m_player;
    std::unique_ptr>GameMap> m_gamemap;
};

这些是将创建的玩家和游戏地图的唯一实例,并且Engine拥有它们,并且应该负责它们的分配和删除。因此,aunique_ptr似乎是这里的不错选择。

现在,我想m_player在我的GameMap类中保留一个简单的引用,因为它比将 传递m_player给需要它的每个函数对我来说更容易。

我的问题是:在类中使用原始指针(通过get()方法获得)是保持对类中原始指针GameMap的引用的最佳方式吗?unique_ptrEngine我认为我不能使用另一个unique_ptr指向原始的,因为对于unique_ptr.

4

1 回答 1

0

我认为使用原始指针不是最好的方法。例如,更好的方法是将 shared_ptr 用于玩家和游戏地图。并将玩家的weak_ptr添加到游戏地图中。

于 2021-04-09T13:07:31.743 回答