【问题标题】:Invalid use of incomplete type circular dependency c++ [duplicate]不完整类型循环依赖c ++的无效使用[重复]
【发布时间】:2018-12-17 03:34:57
【问题描述】:

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

GameState.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() 的操作,但对我来说,第一个选项看起来更面向对象且更受欢迎。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-01
      • 2021-08-12
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      • 2017-10-24
      相关资源
      最近更新 更多