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

关于二维动态数组的有关问题,新手

2014-01-14 
关于二维动态数组的问题,新手求助我自己写了一个程序 想在类Matrix中建立一个二维的动态数组,数组的大小依

关于二维动态数组的问题,新手求助
我自己写了一个程序 想在类Matrix中建立一个二维的动态数组,数组的大小依据main函数中的二维数组大小而定。因为相对一个方阵做一些处理 但在实际中方阵的大小是不确定的,因此希望可以做到动态的赋值。但是这个程序执行以后没有显示 一直没找出问题在哪  我以前的c基础就不好 希望老师们帮助~





#include <iostream>
#include <string>
#include<iomanip>

using namespace std;



class Matrix
{
public:
      Matrix(int n,int* po)
  {
          int m=n;
  int **p;
 p=new int* [m];
 for(int i=0;i<m;i++)
{
p[i]=new int[m];
  for(int j=0;j<m;j++)
p[i][j]=po[i*m+j];
 }   
  }
     
  void show();

protected:
     
  int m;
  int **p;


};

void  Matrix::show()
 {for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
         cout<<setw(5)<<p[i][j]<<" ";
         cout<<endl;
      }
 }

int main()
{
int a[4][4];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
a[i][j]=i*10+j;
int *pp=&a[0][0];
Matrix m1(4,pp);
m1.show();
return 0;
}



[解决办法]
int m=n;定义了一个函数内的局部变量m,导致对象的成员变量protected:int m;在这个函数内被隐藏
[解决办法]
Matrix(int n,int* po)
      {
          int m=n;
          int **p;

p也重定义了,即使改过来了结果可能会对,但这程序内存使用方面有点问题,没有释放内存

热点排行