0

'if'条件を使用して、オブジェクトの場所が空かどうかを確認しようとしています。私はこれにダブルポインタを使用しています。以下のコードを参照してください。

void show_room :: buy_car(int clmn, int row)
{
    int row = row;
    int clmn = clmn;
    string car_door_col;
    string temp1;
    float temp2;
    int temp3;
    int n=0, i;
    this->HBM = new show_room*[3];

    for(int i=0; i<3; i++)
    {               
        this->HBM[i] = new show_room[4];
    }

    for(int j=0; j<row; j++)
    {
        if(this->HBM[clmn][row] == NULL)
        {
        }
    }
}

このループでは:

for(int j=0; j<row; j++)
{
    if(this->HBM[clmn][row] == NULL)
    {

    }
}

[clmn] [row]にオブジェクトがあるかどうかを確認しようとしていますが、これにはNULLを使用しています。これは間違っています。これをどのように実装するのですか。この点で私を助けてください。

4

3 に答える 3

1

の要素をすでにHBM0に初期化していて、それらが指すオブジェクトを削除した後、それらを0にリセットすることを覚えていると仮定すると、次のように簡単に実行できます。

if(this->HBM[clmn][row]) {
    // ... 
}
于 2011-04-06T14:30:34.243 に答える
0

問題は、new show_room[4]show_roomsへの4つのポインターではなく、4つのshow_roomsが連続して作成されることです。

于 2011-04-06T14:55:14.110 に答える
0

あなたがそれを書いた方法では、あなたは単に二次元配列を構築しているだけですshow_room[3][4](動的ストレージを使って)。呼び出すnewとは、すべてのオブジェクトが構築されることを意味するため、「欠落値」や「空のスペース」はありません。

あなたが言うときHBM[i][j]、正確に2つのことのうちの1つが起こる可能性があります:

  • i < 3および、および有効なオブジェクトj < 4への参照を取得するか、またはshow_room
  • 未定義の動作が発生します。

他に何も起こり得ません。

于 2011-07-29T16:41:51.753 に答える