最近我的代码出现了一些问题,涉及到循环依赖。简而言之,有两个类,Player和Ball,它们都需要使用对方的信息。在代码的某个时刻,它们都将被传递对方的引用(从另一个包含两个.h文件的类中传递)。
阅读了相关资料后,我从每个文件中移除了#include.h文件,并采用了前向声明。这解决了彼此声明类的问题,但是现在在尝试访问传递的对象引用时出现了“不完整类型错误”。似乎有一些类似的例子,但通常与更复杂的代码混合在一起,很难缩小到基础部分。
我已经将代码重写为其最简形式(本质上是一个骨架)。
Ball.h:
class Player;
class Ball {
public:
Player& PlayerB;
float ballPosX = 800;
private:
};
Player.h:
class Ball;
class Player {
public:
void doSomething(Ball& ball);
private:
};
Player.cpp:
#include "Player.h"
void Player::doSomething(Ball& ball) {
ball.ballPosX += 10; // incomplete type error occurs here.
}
任何帮助理解为什么会这样的帮助都将不胜感激 :)
任何帮助理解为什么会这样的帮助都将不胜感激 :)
#include "Ball.h"
。 - Igor Tandetnik