C++ 如何从头文件调用枚举?
我正在处理一个代码块,我有一个枚举声明,它位于TTTEnum.h文件中:C++ 如何从头文件调用枚举?,c++,enums,C++,Enums,我正在处理一个代码块,我有一个枚举声明,它位于TTTEnum.h文件中: #ifndef TTTEnum #define TTTEnum enum class Winner { Empty, Computer, Player }; #endif 我有另一个头文件TTT.h,我尝试将我的所有函数原型放在下面: #ifndef TTT_H_INCLUDED #define TTT_H_INCLUDED #include "TTTEnum.h" #include
#ifndef TTTEnum
#define TTTEnum
enum class Winner
{
Empty,
Computer,
Player
};
#endif
我有另一个头文件TTT.h,我尝试将我的所有函数原型放在下面:
#ifndef TTT_H_INCLUDED
#define TTT_H_INCLUDED
#include "TTTEnum.h"
#include <iostream>
#include <cmath>
using namespace std;
TTTEnum::Winner gameSquares[] = { Empty, Empty, Empty, Empty,
Empty, Empty, Empty,Empty, Empty };
class TTT
{
public:
int movesMade = 0;
void HowTo();
void PlayerTurn();
bool FirstGo();
int GetPossibleMoves(int possible_index[9], Winner who, const Winner *const board = gameSquares);
int GetWinIndex(const Winner who);
void ComputerTurn();
void PrintBoard();
};
#endif
\ifndef TTT\u包括在内
#定义包含的TTT_H_
#包括“TTTEnum.h”
#包括
#包括
使用名称空间std;
TTTEnum::Winner gameSquares[]={空,空,空,空,
空,空,空,空,空,空};
类TTT
{
公众:
int movesMade=0;
void HowTo();
void PlayerTurn();
bool FirstGo();
int GetPossibleMoves(int可能指数[9],赢家,常数赢家*常数板=游戏方块);
int GetWinIndex(const Winner who);
void ComputerTurn();
作废印刷板();
};
#恩迪夫
当我编译这些代码时,我得到了8-9行错误,表明“Empty”没有在这个范围内声明。我一直在检查其他枚举问题,我发现当您试图将它调用到其他文件时,枚举非常棘手。有什么解决方案可以帮助我吗?如果您使用的是
枚举类
,您需要根据
i、 e
Winner::Empty
而不仅仅是Empty
应该有效。怎么回事TTTEnum::Winner
?我没有看到TTTEnum
名称空间。我必须在哪里使用TTTEnum名称空间?在TTTEnum.h文件中还是在TTT.h文件中?我认为TTTEnum::Winner足以调用。感谢您的时间,Jonathon ReinhartTTTEnum
只是在头文件中定义的一个预处理器宏,充当。它与C++命名空间无关,就像你试图使用它一样,当你说“代码> TTUNAM::赢家< /代码>。实际发生的情况是,TTTEnum
被扩展为一个空字符串,剩下的是::Winner
(全局命名空间)。所以我将从TTTEnum::Winner中删除TTTEnum::声明?而不是说enum类胜利者,我将改为enum名称空间?Jonathon Reinhart-您介意给我另一个声明吗。我几个小时来一直在想这个问题。这会让我大吃一惊谢谢你Karthik。给我一点时间浏览一下你发布的链接!sTTTEnum::Winner gameSquares[]={Winner::Empty,Winner::Empty,Winner::Empty,Winner::Empty,Winner::Empty,Winner::Empty}@tuygun放下TTTEnum::
。正如所解释的那样,这是不正确的。