Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从头文件调用枚举?_C++_Enums - Fatal编程技术网

C++ 如何从头文件调用枚举?

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

我正在处理一个代码块,我有一个枚举声明,它位于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 <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 Reinhart
TTTEnum
只是在头文件中定义的一个预处理器宏,充当。它与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::
。正如所解释的那样,这是不正确的。