だから私は三目並べゲームに取り組んでいて、私の入力関数のために、プレーヤーが2次元配列に整数として格納するために行った動きを取得していました。入力は、位置へのポインタの1D配列への参照を使用して取得されます2D配列で。
しかし、私の問題は、ポインターを使用して多次元配列の正方形の値を何かに設定したように見える場合、何も起こらないことです。
入力関数は次のとおりです。
void Game::input(Board b){
int *spots[9]; // Possible spots for the input
bool validInput = false;
spots[0] = &b.board[2][0];
spots[1] = &b.board[2][1];
spots[2] = &b.board[2][2];
spots[3] = &b.board[1][0];
spots[4] = &b.board[1][1];
spots[5] = &b.board[1][2];
spots[6] = &b.board[0][0];
spots[7] = &b.board[0][1];
spots[8] = &b.board[0][2];
redo:
cout << ">> " << endl;
int input; // Input
cin >> input; // Get the input
validInput = cin;
if(!validInput){
cout << "Numbers only please!" << endl;
cin.clear();
while(cin.get() != '\n');
goto redo;
}
if(input > 9 || input <= 0){
cout << "Invalid move!" << endl;
goto redo;
}
input--; // Subtract 1 for array location
if(*spots[input] != 0){
cout << "Square is already being used!" << endl;
goto redo;
}
*spots[input] = 1;
}
ここで、数字 7 を入力するとします。b.board[0][0] を 1 に設定する必要があります。ただし、これは発生しないようです。後でユニットケースを実行すると、board[0][0] が 1 に設定されていないようで、配列に反映されません。ここでポインターについて何かを台無しにしていますか?