如何修复C++中因类循环依赖导致的编译错误?
大家好!我正在用C++编写一个简单的游戏,遇到了一个困扰我几个小时的问题。
我有两个类:`Player`(玩家)和`Enemy`(敌人)。玩家应该能够攻击敌人,而敌人需要知道玩家的位置以追踪他。我试图让每个类包含指向另一个类的指针。
以下是简化后的代码:
**Player.h:**
```cpp
#ifndef PLAYER_H
#define PLAYER_H
#include "Enemy.h"
class Player {
public:
void attack(Enemy* e);
int health;
};
#endif
```
**Enemy.h:**
```cpp
#ifndef ENEMY_H
#define ENEMY_H
#include "Player.h"
class Enemy {
public:
void chase(Player* p);
int health;
};
#endif
```
**Player.cpp:**
```cpp
#include "Player.h"
void Player::attack(Enemy* e) {
e->health -= 10;
}
```
**Enemy.cpp:**
```cpp
#include "Enemy.h"
void Enemy::chase(Player* p) {
// 追踪逻辑
}
```
当我尝试编译时,编译器会报出类似这样的错误: