如何解决这种特定的循环依赖关系?

时间:2019-01-16 00:18:50

标签: c++ circular-dependency

在蛇游戏中,我在单独的文件中定义了两个类:SnakeMap(游戏地图,而不是通常的容器)。

这是简化的Map实现:

#include "Snake.hpp"

using Coordinates = std::pair<std::size_t, std::size_t>;

class Map
{
   public:
    Map(Coordinates dimensions);
    void generateFruit(const Snake &);

   private:
    friend class Snake;
    const Coordinates m_dimensions;
    std::unordered_set<Coordinates, boost::hash<Coordinates>> m_fruit_positions;
};

generateFruit在地图上的任意位置生成一个水果,并且不能将水果放置在蛇所在的位置,这意味着它需要知道蛇在哪里,因此自变量{{1} }。

这是简化的Snake实现:

Snake

#include "Map.hpp" class Snake { public: enum class Orientation { Up, Down, Left, Right }; Snake(const Map &); bool isAlive(const Map &) const; void move(Map &); void turn(Orientation); private: std::deque<Coordinates> s_snake; Orientation s_orientation; }; 中的大多数方法都需要Snake来进行边界检查。

解决这种依赖性的最佳方法是什么?

编辑: 转发声明任何类会导致不完整的类型错误。

0 个答案:

没有答案