malla = new Celula**[n + 2];
for(int i = 0 ; i < n + 2 ; ++i){
     malla[i] = new Celula*[m + 2];
     for(int j = 0 ; j < m + 2 ; ++j){
         malla[i][j] = new Celula[m];
     }
}

我正在编写此代码,并像这样分配内存(我想要一个指向Celula的n*m指针数组,可以吗?现在我需要一个析构函数。

现在,我不知道如何访问此数组中的对象,并且:
malla[i][j].setestado(true);

不起作用。

最佳答案

认真考虑@konrad的建议。如果您想与原始数组一起使用,可以执行以下操作:

解除分配:

 for(int i = 0 ; i < n + 2 ; ++i)
 {
 for(int j = 0 ; j < m + 2 ; ++j) delete[] malla[i][j] ;
 delete[] malla[i];
 }
 delete[] malla;

要访问对象:
 malla[i][j][_m].setestado(true);

编辑:

如果malla[i][j]是仅指向对象的指针,则析构函数/释放将如下所示:
 for(int i = 0 ; i < n + 2 ; ++i)
 {
 for(int j = 0 ; j < m + 2 ; ++j) delete malla[i][j] ;
 delete[] malla[i];
 }
 delete[] malla;

访问对象/成员可以像(*malla[i][j]).setestado(true);malla[i][j]->setestado(true);一样完成

关于c++ - 如何删除此二维指针数组?制作一个析构函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9647776/

10-10 21:36