c++ - 不完整类型循环依赖c++的无效使用

标签 c++ oop circular-dependency forward-declaration

<分区>

我有 2 个具有循环依赖的类:

游戏状态.h

#include "Ball.h"

class GameState{
    Ball ball;
public:
    //...
    void groundTouched();
};

球.h

#include "GameState.h"

class Ball{
public:
    //...
    void update(GameState* gameState);
};

球.cpp

#include "Ball.h"

void Ball::update(GameState* gameState){
    gameState->groundTouched();
}

当然我有这样的错误:

Ball.h:34:69: error: ‘GameState’ has not been declared

然后我在那里使用前向声明:

class GameState;
class Ball{
public:
    //...
    void update(GameState* gameState);
};

但随后出现错误:

Ball.cpp:51:22: error: invalid use of incomplete type ‘class GameState’

如何从 Ball 调用 GameState 方法?是否可以?我知道我可以从 Ball 中删除 GameState.h 并从 GameState 中执行类似 ball.isGroundTouched() 的操作,但对我来说第一个选项看起来更面向对象并且更受欢迎。

最佳答案

您仍然必须在 source 文件 Ball.cpp 中包含 GameState.h 头文件。

关于c++ - 不完整类型循环依赖c++的无效使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245743/

相关文章:

c++ - 三法则的异常(exception)?

C++。 Child 继承自 Parent 并作为 Parent 属性包含在内

c++ - 为字符串 vector 预分配内存(C++ vector<string>)

c++ - Laderman 的 3x3 矩阵乘法只有 23 次乘法,值得吗?

c++ - 超过 5 个参数的绳索表达模板无法正确内联

c++ - RichEdit 的 EM_AUTOURLDETECT 消息可识别链接,但我无法单击它

python - 无法将列表作为类属性传递

javascript - 在对象内设置超时函数

python - 检查 self.__class__ 的目的是什么?

associations - Elm 中的建模关联导致依赖循环