循环依赖项缺少类型说明符-假定为int.注意:C++不支持default-int



我对c++还是个新手,有人告诉我#pragma曾经应该处理循环依赖

我的GameManager.h和GameSetting.h都需要相互了解,并且每个都有另一个的指针

对于我的游戏设置。h我有:

#pragma once
#include "PlayerManager.h"
#include <fstream>
#include "GameManager.h";
class GameSettings {
private:
PlayerManager* pM;
GameManager* gM;
vector<Player*> players;
bool inGame = false;
double betValue = 5;
bool allowSplit = true;
bool allowInsurance = true;
GameSettings(PlayerManager* pM, GameManager* gM) { this->pM = pM; this->gM = gM; }
struct GameSettingData {
vector<int> playersId;
double betValue;
bool allowSplit;
bool allowInsurance;
};

函数声明。。。

对于GameSettings.pp,我只有#include";GameSettings.h";

对于GameManager,我只有

#pragma once
#include "GameSettings.h"
class GameManager {
private:
bool isActive = false;
GameSettings *gS;
public:
bool getIsActive() { return isActive; }
bool startGame() { return true; }
};

当我在GameManager中删除任何提及GameSettings的内容时,所有内容都可以

我大部分都知道c#,所以这种循环依赖对我来说是一种新的东西。我确实尝试过其他类似的问题,但这对没有帮助

在GameMager.h中使用GameSettings的前向声明。指针在解除围栏之前不需要完整的类定义。

#pragma once
class GameSettings;
class GameManager {
private:
bool isActive = false;
GameSettings *gS;
public:
bool getIsActive() { return isActive; }
bool startGame() { return true; }
};

GameManagerPlayerManager也可以参与GameSettings.h中的正向声明。

#pragma once
#include <fstream>
class PlayerManager;
class GameManager;
class GameSettings {
private:
PlayerManager* pM;
GameManager* gM;
vector<Player*> players;
bool inGame = false;
double betValue = 5;
bool allowSplit = true;
bool allowInsurance = true;
GameSettings(PlayerManager* pM, GameManager* gM) { this->pM = pM; this->gM = gM; }
struct GameSettingData {
vector<int> playersId;
double betValue;
bool allowSplit;
bool allowInsurance;
};

在.cpp文件中设置所需的#include

相关内容

最新更新