gpt4 book ai didi

c++ - "error C2065: undeclared identifier"来自另一个 header 的枚举包含

转载 作者:行者123 更新时间:2023-11-30 02:40:53 27 4
gpt4 key购买 nike

我在同一个头文件中构建一个类,认为它会很小,因为我的代码开发需要将它放入多个头文件/cpp 文件中。我的数据结构依赖于现在包含在另一个头文件中的枚举。编译器提示。

错误 C2653:“EnumBox”:不是类或命名空间名称

error C2065: 'PLAYERNAME' : 未声明的标识符

错误 C2065:“RANDOMNUMBER”:未声明的标识符

当所有使用我的枚举的类都在同一个头文件中时,它就起作用了。到底是怎么回事? Extern 似乎不适用于枚举。

GameDataNetworkHelper.h

#pragma once
#ifndef GAMEDATANETWORKHELPER_H
#define GAMEDATANETWORKHELPER_H
#include "../RakNetP2PExample/NetworkHelper.h"
#include "../GameExample/NumberGuesser.h"
#include "BitStream.h"
#include "../RakNetP2PExample/GameData.h"
#include "..\ConsoleApplication1\RandomNumber.h"
#include "..\ConsoleApplication1\PlayerName.h"
class NumberGuesser;
class NetworkHelper;

class EnumBox
{
public:
static const enum GameDataType {GAMEDATA = 0, PLAYERNAME=1, RANDOMNUMBER=2};
};


//..some code which uses RandomNumber, and PlayerName



#endif

和RandomNumber.h

    #pragma once

#ifndef RANDOMNUMBER_H
#define RANDOMNUMBER_H
#include "../RakNetP2PExample/NetworkHelper.h"
#include "../GameExample/NumberGuesser.h"
#include "BitStream.h"
#include "../RakNetP2PExample/GameData.h"
#include "GameDataNetworkHelper.h"
class RandomNumber : public GameData
{
public:
static const int randomNumberType = EnumBox::GameDataType::RANDOMNUMBER;

//.. some other code
};


#endif

玩家名.h

#pragma once
#ifndef PLAYERNAME_H
#define PLAYERNAME_H
#include "../RakNetP2PExample/NetworkHelper.h"
#include "../GameExample/NumberGuesser.h"
#include "BitStream.h"
#include "../RakNetP2PExample/GameData.h"
#include "GameDataNetworkHelper.h"
class PlayerName : public GameData
{

public:
static const int playerNameType = EnumBox::PLAYERNAME;
//...some other code

};
#endif

我也试过了extern enum GameDataType {GAMEDATA =0, PLAYERNAME, RANDOMNUMBER};

最佳答案

您有两个 header 试图相互包含。删除任何不需要的 #include;并尽可能用前向声明替换它们。

特别是,找到一种方法来阻止 GameDataNetworkHelper.hRandomNumber.h 相互包含。除非 RandomNumber 正在做一些非常奇怪的事情,否则它不应该依赖于游戏、数据或网络。或许您可以将 EnumBox 移动到一个单独的 header 中,这样它只需要包含它。

关于c++ - "error C2065: undeclared identifier"来自另一个 header 的枚举包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587355/

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