0

I am trying to use an 'if' condition to check whether a location for an object is empty or not. I am using double pointers for this. Please see the code below:

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)
        {
        }
    }
}

In this loop:

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

    }
}

I am trying to check whether there is an object at [clmn][row] or not, and I am using NULL for this which is wrong. How am I supposed to implement this. Please help me in this regard.

4

3 回答 3

1

假设您已经将 的元素初始化HBM为 0,并且您记得在删除它们指向的对象后将它们重置为 0,您可以简单地执行以下操作:

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

您编写它的方式,您只是构造一个二维数组show_room[3][4](具有动态存储)。调用new意味着构造每个对象,因此没有“缺失值”或“空格”。

当您说 时HBM[i][j],可能会发生以下两种情况之一:

  • i < 3j < 4,并且您获得对有效show_room对象的引用,或者
  • 你会招致未定义的行为。

没有其他事情可以发生。

于 2011-07-29T16:41:51.753 回答
0

问题是它new show_room[4]不会创建四个指向 show_rooms 的指针,而是连续创建四个 show_rooms。

于 2011-04-06T14:55:14.110 回答