2011-04-06 93 views
0

我想使用'如果'条件来检查一个对象的位置是否为空。我正在使用双指针。请参阅下面的代码:如何检查双指针空的空间(NULL)

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的这是错误的。我该如何实现这一点。在这方面请帮助我。

+0

什么是show_room?一类? – walkingTarget 2011-04-06 14:08:39

+3

为什么哦为什么你这样做:'int row = row; int clmn = clmn;' – meagar 2011-04-06 14:24:56

+0

是show_room是一个类。 – Rafay 2011-04-06 14:29:00

回答

1

假设你已经初始化HBM元素为0,而你记住删除它们指向的对象后,将其重置为0,你可以简单地做:

if(this->HBM[clmn][row]) { 
    // ... 
} 
+0

请考虑这个情况...... HBM [0] [2]有一些东西,而HBM [0] [1]是空的。现在我试图执行一些操作来检查HBM [0] [1]是否为空。请帮忙。 – Rafay 2011-04-06 14:33:38

+0

@Spoilt那到底是什么问题?按照我的建议循环“HBM”并用“if”测试每个元素。这会告诉你该元素是否为空。 – meagar 2011-04-06 14:34:53

+0

那么支票在哪里?你写的Wat会不会检查NULL条件?对不起,我是愚蠢的,但仍请帮助.. – Rafay 2011-04-06 14:38:47

0

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

+0

是的,这是真的....多数民众赞成我没有。 – Rafay 2011-04-06 14:56:59

+0

仍然是我的问题没有解决.. :( – Rafay 2011-04-06 15:08:01

0

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

当你说HBM[i][j],恰恰是两件事情可能发生:

  • 无论i < 3j < 4,你获得一个有效的​​对象的引用,或
  • 您蒙受未定义行为。

没有别的事情会发生。