首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++中的二维数组有关问题?

2012-02-29 
c++中的二维数组问题??我用这种方法定义了一个二维的数组!int**ga;。。。。。。ganewint*[5]for(inti0i5i+

c++中的二维数组问题??
我用这种方法定义了一个二维的数组!
int   **ga;
        。。。。。。
    ga       =       new       int*[5];      
                  for(int       i       =       0;       i       <       5;       i++)      
                                    ga[i]       =   new   int   [6];      

                    。。。。。。
void   vect::   put(int   x,   int   y,   int   value)   {
if(x   <   up1   &&   y <   up2)
                ga[x][y]   =   value;               //此行有错
else  
exit(1);

}
上面是数组的赋值函数,但是结果总是提示ga[x][y]   =   value;有错
以下是我的全部代码
求高手解决?
定把分数送给正确搞定的一个人!
#include   <iostream.h>
#include   <stdlib.h>
class   vect   {
          public:
vect();
void     put(int     x,   int     y,     int     value);
int   get(int,   int);

~vect();
  private:
  int   **ga;

  int   up1;
  int   up2;
  int   size;
};

vect::   vect()
{
up1   =   5;  
up2   =   6;
size   =   up1*up2;


              ga       =       new       int*[5];      
                  for(int       i       =       0;       i       <       5;       i++)      
                                    ga[i]       =   new   int   [6];    
}


vect::   ~vect()   {
  for(int     h   =0;   h   <   up2;   h++)      
                    delete       ga[h];      
                    delete       []ga;    
}


int   vect::   get(int   x,   int   y)     {
if(x   <   up1   &&   y <up2)
      return   ga[x][y];
else
      exit(1);
}

void   vect::   put(int   x,   int   y,   int   value)   {
if(x   <   up1   &&   y <   up2)
                ga[x][y]   =   value;
else  
exit(1);

}


void   main()
{
vect   m;
int   i,j;
for(i=0;i <5;i++)               //   数组初始化


for(j=0;j <6;j++)
m.put(i,j,0);

                 
    //     m.put(3,4,8);                               //调用put()函数
//m.put(2,2,6);                               //调用put()函数
cout < < "m.put(3,4,8) " < <endl;
cout < < "m.put(2,2,6) " < <endl;

cout < < "m.get(3,4)= " < <m.get(3,4) < <endl;       //调用get()函数

cout < < "m.get(2,2)= " < <m.get(2,2) < <endl;       //调用get()函数
}
 

       



         


[解决办法]
vect:: ~vect() {
for(int h =0; h < up2; h++)
delete ga[h];
delete []ga;
}

=====>
vect:: ~vect() {
for(int h =0; h < up1; h++)
delete []ga[h];
delete []ga;
}

[解决办法]
vect:: ~vect() {
for(int h =0; h < up1; h++) //up1 not up2
delete []ga[h]; //你会这里delete []ga; 怎么这儿错了
delete []ga;
}

[解决办法]
vect:: ~vect() {
/*for(int h =0; h < up2; h++)
delete ga[h]; */ //去掉这里就好了
delete []ga;
}
[解决办法]
错了,应该是这样的
vect:: ~vect() {
for(int h =0; h < up1; h++)
delete []ga[h];
delete []ga;
}
[解决办法]
这样子就可以了,已经测试过了
vect:: vect()
{
up1 = 5;
up2 = 6;
size = up1*up2;


ga = new int*[up1];
for(int i = 0; i < up1; i++)
ga[i] = new int [up2];
}


vect:: ~vect() {
for(int h =0; h < up1; h++) ////////////
delete []ga[h];
delete []ga;
}

热点排行