массивы — проблема с программой C ++ Reversi

У меня проблемы с классами для программы на 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 ++ и классах, и я не очень понимаю указатели и тому подобное. Как я могу заставить плату обновляться и оставаться такой же между функциями? Любые отзывы будут оценены, спасибо!

1

Решение

внутри
void Board::CreateBoard()
вы объявили локальную переменную char Board[BoardSize][BoardSize] что вы наполняете -,
Но в вашем
void Board::PrintBoard()
Я думаю, что вы звоните char Board[MAX_SIZE][MAX_SIZE] определяется в классе.

Итак, вы устанавливаете локальную переменную и печатаете переменную класса, которую вы не установили, отсюда и странный вывод.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]