Я пытаюсь скомпилировать этот код:
class OthelloState {
public: // constructor
Othello(int r, int c);
/* other stuff */
private: // private data
const int rows;
const int columns;
int board[rows][columns];
}
Я заканчиваю с:
OthelloState.h:109: error: invalid use of non-static data member 'OthelloState::rows'
OthelloState.h:115: error: from this location
OthelloState.h:115: error: array bound is not an integer constant
OthelloState.h:112: error: invalid use of non-static data member 'OthelloState::columns'
OthelloState.h:115: error: from this location
OthelloState.h:115: error: array bound is not an integer constant
Я предполагаю, что это означает, что я должен сделать rows
и columns
статическими. Но если я сделаю их статическими, я не смогу инициализировать их с помощью конструктора, как я должен сделать для этого проекта ...
Есть ли другой способ, которым я могу это сделать?
PS: я знаю, что в реальном Отелло, доска представляет собой квадратную сетку 8 на 8 ... Но, учитывая, сколько времени потребуется компьютеру, чтобы сгенерировать следующий лучший ход на частичной сетке 8 на 8, мы не будет играть с «настоящей» доской Отелло (т.е. без предопределенных размеров досок).