【发布时间】:2017-07-31 06:46:02
【问题描述】:
对于一项学校作业,我们被指示制作一个井字游戏板。我的程序目前可以运行,但是我遇到了一些问题,我不太确定它们为什么不正确:
class TicTacToe{
private:
char user_Turn[] = {'x','o'}; //Array to keep track of turn
当我尝试使用它进行编译时,我得到一个错误和警告。警告是“非静态数据成员的类内初始化是 C++11 扩展”。在课堂上初始化非静态数据成员是不好的做法吗?为什么?
错误是“不能从类内初始化器推导出数组绑定”。当我在数组中放一个“2”时,它就消失了。那么类中的数组需要绑定吗?这是为什么?为什么初始化器不能推导出边界?
我的第二个问题是,同一个项目要求我们在一个名为 Board 的单独类中使用枚举对象来声明赢家/输家/平局。枚举是公开声明的:
public:
enum Game {X_WON, O_WON, DRAW, UNFINISHED}; //enum declaration
并且我的井字游戏类有一个 Board 对象作为名为 board1 的数据成员。如何使用我需要做的枚举:
Board::UNFINISHED
而不是
Board.UNFINISHED
此外,即使在我的 Board 实现文件中,我也需要对返回枚举变量的函数执行此操作:
Board::Game Board::gameState()
它在同一个类中,为什么游戏需要由'Board::'进行。我想我对枚举与类一起工作知之甚少。
谢谢!非常感谢任何回答的人。
【问题讨论】:
-
这是一个问答网站。问题是单数,不是复数。提出的两个问题甚至与您发布的三行(不完整的)代码无关。您可能想查看How to Ask。 (并且编译器错误不是调试,以供将来参考。调试是找出您正在执行的代码没有按预期工作的原因,并且您无法执行无法编译的代码。)
-
我定义了 QuestioN 和 Answer,而不是 QuestionS 和 Answer。显然你很难区分单数 (ONE) 和复数 (MORE THAN ONE)。在获取有关正确使用本网站的信息时,不要刻薄,您应该花时间阅读tour 并阅读help center 页面以了解该网站的工作原理。它们不是相关的问题;它们是关于同一代码中两个独立问题的三个问题,其中大部分甚至不包含在问题中。是的,singular 实际上意味着 one。谷歌一下。