1

約 2 か月の C++ の経験 (他にバックグラウンドなし) を持ったまったくの初心者なので、気楽にやってください。

プログラミングの課題で戦艦ゲームを書いています。ゲーム グリッドは 15X20 で、グリッドを class のプライベート メンバー変数として使用しようとしていますplayer

私の質問は:

クラスplayerにプライベート メンバー変数がある場合:

char playgrid[15][20];

アクセサ関数が次のように定義されている理由はありますか?

char getgrid(int index1, int index2)
{
    return playgrid[index1][index2];
}

うまくいきませんか?

それは私の頭をやっています。私が得ているエラーは次のとおりです。

c2065: 'playgrid' 宣言されていない識別子

return playgrid[val1][val2]アクセサー定義内の行を指します。

これを理解しようとしている間、ゲッターを使用して他のプライベートメンバー変数から値を取得することに成功したため、オブジェクトが作成された後、他のすべてがオブジェクト内で適切に機能しています。私は間違いなく、スペルを間違えたり、大文字を誤用したりしていません。私のコンストラクタでは、playgrid は次のように初期化されます。

int i, j;

for (i=0; i<15; i++)
{
    for (j=0; j<20; j++)
    {
        playgrid[i][j]='o';
    }
}

何を与える?

4

1 に答える 1

4

アクセサ関数が次のように定義されている理由はありますか?

char getgrid(int index1, int index2)
{
return playgrid[index1][index2];
}

うまくいきませんか?

はい。このように宣言された関数は、クラスのメンバー関数ではありません。あなたはおそらく意味した

char player::getgrid(int index1, int index2)
{
    // ...
}
于 2010-09-25T12:14:00.347 に答える