不完整类型循环依赖c++的无效使用
Invalid use of incomplete type circular dependency c++
我有 2 个 类 循环依赖:
GameState.h
#include "Ball.h"
class GameState{
Ball ball;
public:
//...
void groundTouched();
};
Ball.h
#include "GameState.h"
class Ball{
public:
//...
void update(GameState* gameState);
};
Ball.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
头文件
我有 2 个 类 循环依赖:
GameState.h
#include "Ball.h"
class GameState{
Ball ball;
public:
//...
void groundTouched();
};
Ball.h
#include "GameState.h"
class Ball{
public:
//...
void update(GameState* gameState);
};
Ball.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
头文件