У меня проблемы с классами для программы на C ++ в игре Реверси. По сути, моя проблема — попытаться получить двумерный массив (который является частной переменной класса) для обновления после выхода из функции. Массив объявлен как закрытая переменная класса Board, как показано ниже: (MAX_SIZE = 10, но размер массива контролируется 1-м аргументом в main.)
private:
//array variable for the board
char Board[MAX_SIZE][MAX_SIZE];
int BoardSize;
};
Здесь я создаю доску, устанавливая ее для начала всех штрихов. Я отладил его cout, чтобы убедиться, что он работает правильно и работает.
void Board::CreateBoard(){
char Board[BoardSize][BoardSize];
//Sets the board to be all dashes
for (int i=0; i < BoardSize; i++){
for (int j=0; j < BoardSize; j++){
Board[i][j] = '-';
cout << Board[i][j] << " ";
}
}
}
Вот функция printBoard, которая при вызове просто печатает бред. Я подозреваю, что это потому, что плата возвращается к своему предыдущему состоянию после завершения функции CreateBoard ().
void Board::PrintBoard(){
//Prints out the array board
for(int i=0;i < BoardSize;i++){
for(int j=0;j < BoardSize;j++){
cout << Board[i][j];
}
}
}
Я новичок в C ++ и классах, и я не очень понимаю указатели и тому подобное. Как я могу заставить плату обновляться и оставаться такой же между функциями? Любые отзывы будут оценены, спасибо!
внутри
void Board::CreateBoard()
вы объявили локальную переменную char Board[BoardSize][BoardSize]
что вы наполняете -
,
Но в вашем
void Board::PrintBoard()
Я думаю, что вы звоните char Board[MAX_SIZE][MAX_SIZE]
определяется в классе.
Итак, вы устанавливаете локальную переменную и печатаете переменную класса, которую вы не установили, отсюда и странный вывод.
Других решений пока нет …