‘this’不能用于常量表达式错误(C)
发布时间:2020-12-16 07:16:31 所属栏目:百科 来源:网络整理
导读:所有.我有一个类定义如下: class Board { int columns,rows; bool board[10][10];public: Board(int,int); void nextFrame(); void printFrame();}; 我的void nextFrame()不断给我[rows] [columns]的错误,因为“”’不能在它们的两个常量表达式中”.我怎样
所有.我有一个类定义如下:
class Board { int columns,rows; bool board[10][10]; public: Board(int,int); void nextFrame(); void printFrame(); }; 我的void nextFrame()不断给我[rows] [columns]的错误,因为“”’不能在它们的两个常量表达式中”.我怎样才能重新定义它以使其有效?我理解错误.函数的定义如下,并且错误发生在以下代码示例的第3行. void Board::nextFrame() { int numSurrounding = 0; bool tempBoard[rows][columns]; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { if ((i + 1) < rows && board[i + 1][j] == true) { numSurrounding++; } if ((i - 1) >= 0 && board[i - 1][j] == true) { numSurrounding++; } if ((j + 1) < columns && board[i][j + 1] == true) { numSurrounding++; } if ((j - 1) >= 0 && board[i][j - 1] == true) { numSurrounding++; } if ((i + 1) < rows && (j + 1) < columns && board[i + 1][j + 1] == true) { numSurrounding++; } if ((i + 1) < rows && (j - 1) >= 0 && board[i + 1][j - 1] == true) { numSurrounding++; } if ((i - 1) >= 0 && (j + 1) < columns && board[i - 1][j + 1] == true) { numSurrounding++; } if ((i - 1) >= 0 && (j - 1) >= 0 && board[i - 1][j - 1] == true) { numSurrounding++; } if (numSurrounding < 2 || numSurrounding > 3) { tempBoard[i][j] = false; } else if (numSurrounding == 2) { tempBoard[i][j] = board[i][j]; } else if (numSurrounding == 3) { tempBoard[i][j] = true; } numSurrounding = 0; } } for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { board[i][j] = tempBoard[i][j]; } } } 解决方法
您需要使用STL中的集合.
这是一个嵌套向量来获得你的董事会的例子: #include <vector> #include <iostream> using namespace std; class Board { int columns,rows; vector<vector<bool>> board; public: Board(int x,int y) : board(vector<vector<bool>>(x,vector<bool>(y))) { } void nextFrame() { // Fill in } void printFrame() { // Fill in } size_t xdim() { return board.size(); } size_t ydim() { if (board.size() == 0) { return 0; } return board.at(0).size(); } }; int main() { Board b(10,20); cout << "Made the board" << endl; cout << "X: " << b.xdim() << endl; cout << "Y: " << b.ydim() << endl; } 您可以了解board(vector< vector< bool>>(x,vector< bool>(y)))here和here的成员初始化语法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |