Как проверить пустое пространство (NULL) в двойных указателях - PullRequest
0 голосов
/ 06 апреля 2011

Я пытаюсь использовать условие «если», чтобы проверить, является ли место для объекта пустым или нет.Я использую двойные указатели для этого.Пожалуйста, посмотрите код ниже:

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] [строка] или нетЯ использую NULL для этого, что неправильно.Как я должен реализовать это.Пожалуйста, помогите мне в этом.

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

Предполагая, что вы уже инициализировали элементы HBM равными 0, и вы не забыли сбросить их на 0 после удаления объектов, на которые они указывают, вы можете просто сделать:

if(this->HBM[clmn][row]) {
    // ... 
}
0 голосов
/ 29 июля 2011

Как вы написали, вы просто создаете двумерный массив show_room[3][4] (с динамическим хранением). Вызов new означает, что каждый объект создается, поэтому нет «пропущенных значений» или «пустых мест».

Когда вы говорите HBM[i][j], может произойти ровно одно из двух:

  • Либо i < 3 и j < 4, и вы получите ссылку на действительный объект show_room, либо
  • вы подвергаетесь неопределенному поведению.

Ничего другого не может произойти.

0 голосов
/ 06 апреля 2011

Проблема в том, что new show_room[4] создает не четыре указателя на show_rooms, а четыре show_rooms подряд.

...