gpt4 book ai didi

c++ - header 与 typedef 之间的循环依赖

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:36 25 4
gpt4 key购买 nike

我有这样的情况

在文件 GameServer.h 中:

class ServerGameStruct; //I can't simply include ServerGameStruct.h
// because of cyclic dependency
class GameServer {
public:
class Client { };
private:
ServerGameStruct gameStructure_;
}

在文件 ServerGameStruct.h 中

#include "GameServer.h"

class ServerGameStruct {
public:
typedef GameServer::Client Client;
// some method which use type Client *
// no class members with type Client
}

编译后出现错误,提示 GameServer::gameStructure_ 使用未定义类 GameServerStruct。

如何解决这种 header 循环依赖?

最佳答案

最简单的解决方案是使 gameStructure_ 成为指针:

std::unique_ptr<ServerGameStruct> gameStructure_;

原因是指向类的指针不需要声明类的完整定义。当您声明一个类的直接实例时,就像在您的代码中一样,您需要该类的完整定义。

您也可以将其设为引用,但您必须在 GameServer 构造函数中对其进行初始化。

关于c++ - header 与 typedef 之间的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16792268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com