我正在尝试为井字游戏制作一个棋盘对象,但无法解决此错误。
class Board {
public:
void reset() {
board[3][3] = {
{" ", " ", " "},
{" ", " ", " "},
{" ", " ", " "}
};
};
private:
std::string board[3][3];
Board() {
reset();
};
};
我尝试将变量类型从 std::string 切换为 char 但它抛出了一个不同的错误,这也没有意义
我认为您的
reset()
类的 Board
方法可能有问题。它试图更改 board
成员变量(类型为 String[][]
)的值,这是不可能的,因为它是不可变的......我认为? - 无论如何,我看到这个问题有两个修复:
我要使用的修复方法(如果您想保持代码的相同氛围)是循环遍历板上的每个值并将字符串单独设置为
" "
,如下所示:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = " ";
}
}
将类更改为如下所示:
class Board {
public:
void reset() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = " ";
}
}
};
private:
std::string board[3][3];
Board() {
reset();
};
};
但是,如果您正在寻找更现代的东西,我建议使用 C++
std::array
而不是原始数组。利用 std::array
可以让您访问内置的 fill()
方法(即 std::array::fill
)来初始化数组,如下所示:
#include <array>
#include <string>
class Board {
public:
void reset() {
board.fill(" ");
};
private:
std::array<std::array<std::string, 3>, 3> board;
Board() {
reset();
};
};