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;
}