首页 > 解决方案 > 在这个项目中如何避免循环依赖?

问题描述

我目前的项目是这样设置的

游戏.cpp

#include "game.h"
#include "enemy.h"

class Game {
    public:
    
    ...
    ...
    std::vector<Enemy> enemies;
    ...
};

敌人.cpp

#include "game.h"

class Enemy {
    public:

    ...
    ...
    void turn(Game* game);
    ...
};

我显然明白,在这种情况下,这会产生循环依赖。Game 对象需要一个对 Enemy 的引用来保存一个敌人列表,并且 Enemy 有一个需要引用 Game 对象的函数来完成它的任务。我不确定如何打破这种循环依赖。我试图用前向类声明制作一个头文件,但我遇到了“无效使用不完整类型”错误。

标签: c++

解决方案


如果这些是唯一的依赖函数,您可以按以下顺序声明和初始化:

class Game;

class Enemy {
public:
    void turn(Game* game);
};

class Game {
public:
    std::vector<Enemy> enemies;
};

现场示例:https ://ideone.com/g6Vmwi


推荐阅读