"我在构造函数中从文件中读取棋盘,但我不知道如何使它具有可变大小,以便我可以读取任意大小的棋盘"
在C++中,您可以使用std::vector
而不是原始数组,如下所示:
class ticTacToe {
public:
ticTacToe();
void display();
bool moveIsValid();
private:
int rows;
int cols;
std::vector<std::vector<int>> board;
};
在构造函数中可以如下应用
动态分配:
ticTacToe(int rows_, int cols_) : rows(rows_), cols(cols_) {
board.resize(rows,std::vector<int>(cols));
}
然后在类外部访问它
好的,我不确定这是否是一个好主意,但你可以简单地添加一个访问器函数来访问该成员变量。
std::vector<std::vector<int>>& accBoard() { return board; }
更好的设计方法可能是提供类似于从
std::istream
读取的单独函数。
void ticTacToe::readFromStream(std::istream& is) {
is >> rows >> cols;
board.resize(rows,std::vector<int>(cols));
for(int r = 0; r < rows; ++r) {
for(int c = 0; c < cols; ++c) {
cin >> board[r][c];
}
}
}
对于真实的代码,当然需要检查输入错误,例如:
if(!(is >> rows >> cols)) {
// handle errors from input
}
ticTacToe newGame;
,不需要使用new
。 - πάντα ῥεῖ