c++ - 在这个项目中如何避免循环依赖?
问题描述
我目前的项目是这样设置的
游戏.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 对象的函数来完成它的任务。我不确定如何打破这种循环依赖。我试图用前向类声明制作一个头文件,但我遇到了“无效使用不完整类型”错误。
解决方案
如果这些是唯一的依赖函数,您可以按以下顺序声明和初始化:
class Game;
class Enemy {
public:
void turn(Game* game);
};
class Game {
public:
std::vector<Enemy> enemies;
};
推荐阅读
- javascript - 如何使用连续数据
- c++ - std::vector 在 last 之后使用第一个迭代器擦除
- firebase - 如何在 Firebase 实时数据库中解码这个 json?
- python - AttributeError:“工作表”对象没有属性“set_column”
- math - 数学问题在子视图中划分视图
- javascript - 如何找到属性值的最小值和最大值
- php - 错误:类 'MailchimpMarketing\ApiClient'
- azure-active-directory - Blazor WASM - AzureAD 身份验证 - HttpContext.User.Claims 是空的?
- java - 如何让用户能够通过使用扫描仪功能无限输入键盘来输入内容?
- python - 不同模块中的相同导入是否“堆叠”在内存中?