【发布时间】:2018-02-06 12:56:40
【问题描述】:
我很难理解如何在一个类中声明一个数组并在同一个类的所有函数中使用它。数组大小取决于用户。
class Game{
public:
void createBoard();
void gameStart();
void inputBoard();
void inputBoardSize();
Game(int,int);
private:
int rowChoice;
int colChoice;
int playerTurnRow;
int playerTurnCol;
string playerTurn;
string board[rowChoice][colChoice];
};
Game::Game(int row,int col){
rowChoice = row;
colChoice = col;
playerTurnRow = 0;
playerTurnCol = 0;
playerTurn = "R";
board[row][col];
}
void Game::createBoard(){
for (int arrayRow = 0;arrayRow < rowChoice;arrayRow++){
for (int arrayCol = 0;arrayCol < colChoice;arrayCol++){
board[arrayRow][arrayCol] = " ";
}
}
我的声明可能有误,但我们将不胜感激
【问题讨论】:
-
board[row][col];应该做什么?您可能需要std::vector<std::vector<std::string>>而不是原始数组:string board[rowChoice][colChoice]; -
请使用
std::vector,省去很多时间和痛苦 -
类定义指定对象布局。对象布局是静态不可更改的属性。如您所指,这样的数组如何应该是所有对象的固定属性?
-
如果用户应该在运行时确定大小,您将无法使用静态数组(可以在编译时使用模板初始化)而是堆分配的动态数组(即使用 new 运算符)。如前所述,使用像 std::vector 这样的动态 stl 数组类型更容易。
标签: c++ arrays class multidimensional-array