如何从头文件中调用枚举?

时间:2014-05-21 06:08:41

标签: 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 <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

当我编译这些代码时,我得到8-9行错误,表示在此范围内未声明'Empty'。我一直在检查其他枚举问题,当你尝试将其调用到其他文件时,我发现枚举非常棘手。有什么解决方案可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

根据http://www.cprogramming.com/c++11/c++11-nullptr-strongly-typed-enum-class.html

,如果您使用Empty,则需要使用Winner将名称enum class的范围限定为<{1}}

Winner::Empty而非Empty应该有效。