24小时热门版块排行榜    

查看: 983  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

martialvv

铁虫 (初入文坛)

[求助] 类的数组成员初始化问题 已有2人参与

我建了一个方形矩阵类,有两个数据成员,如下:
class Matrix
{         private:                
                      int dim;        
                      int **mat;                 
        public:                
                      Matrix(int=2);        
                      void showMatrix();
};
其中dim是行数也是列数,用一个指针**mat指向这个二维数组,这个二维数组的行数和列数由dim定义。这个该怎么初始化(可以把全部元素初始化为0)?我试过如果把数组定义成 int mat[][10]这样给个具体数值是可以编译运行的,但灵活性不够,我希望从main函数输入一个整数赋值给dim,然后由dim定义矩阵的尺寸,该怎么实现呢?我查了网上其他人的做法,是把数组定义成一维的,并利用一个初始化函数定义矩阵大小,比如函数语句包含mat=new int[size],我模仿这个用int **mat = new int[dim][dim],但不能成功(即使我使用他们的程序,编译时也会提示size这里需要一个常数)。这个问题怎么解决?
谢谢。
回复此楼
Boncourage!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rbs

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
2楼: Originally posted by 绿遍山原 at 2014-10-15 14:12:49
//分配内存
int *ptr = new int ;
int **mat = new int *;
for (int i = 0; i < dim; i++) mat = &ptr;
// 初始化
memset(mat, 0, dim*dim*sizeof(int));
// 释放
delete [] mat;
delete [] mat;
...

把导数第二句改成
delete ptr;
更好理解一点。

非常棒的分配二维数组的方法。
5楼2014-10-16 20:07:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 martialvv 的主题更新
信息提示
请填处理意见