尝试在单独的 class 中定义变量时遇到一些问题 - 用于使用一个变量。

Having some issues attempting to define a variable in a separate class - use to working with one.

我正在尝试使用 OOP 制作 Tic-Tac-Toe 游戏,但我遇到了问题。当尝试制作一个总共有 9 个正方形的棋盘并且它们都是空的作为矢量时,我执行以下操作。

主要

#include "stdafx.h"

#include <vector>

int main()
{

    char empty = ' '; //Empty square on playing board
    const int numbOfSquares = 9; //Total amount of squares on board
    std::vector<char> board(numbOfSquares, empty); // The playing board

    return 0;
}

在我的面板中 class 我正在尝试做同样的事情,但它的工作方式不同。

Board.h

#pragma once
#include <vector>

class Board
{
private:
    const char empty = ' '; //Empty square on game board
    const int numbOfSquares = 9; //Number of squares on the board
    std::vector<char> board(numbOfSquares, empty); //The playing board
public:

};

说 'numbOfSquares' 和 'empty' 不是类型名称时出错。我想我理解这个错误消息,但我不确定如何解决它。我可以 - 重载,这个术语是 - 成员函数中的 board 变量吗?

我完全不知道该怎么做,希望得到一些帮助。感谢您的时间。

在指定 class 成员的列表时,不允许

std::vector<char> board(numbOfSquares, empty);。相反,您应该使用构造函数初始化列表:

Board(): board(numbOfSquares, empty)
{
}

所有成员都可以这样初始化。例如,您的行 const int numbOfSquares = 9; 是写作的快捷方式:

Board(): numbOfSquares(9)
{
}

然而,对于需要在括号中提供构造函数参数的情况,没有这样的捷径。

提供构造函数参数作为花括号初始化器列表的快捷方式,但是避免为 vector 这样做是明智的,因为向量更愿意将大括号的内容作为向量的初始值列表,而不是作为构造函数参数。