我正在处理一段代码,我在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'。我一直在检查其他枚举问题,当你尝试将其调用到其他文件时,我发现枚举非常棘手。有什么解决方案可以帮助我吗?
答案 0 :(得分:1)
根据http://www.cprogramming.com/c++11/c++11-nullptr-strongly-typed-enum-class.html
,如果您使用Empty
,则需要使用Winner
将名称enum class
的范围限定为<{1}}
即Winner::Empty
而非Empty
应该有效。