如何将由三重指针组成的矩阵动态分配给一个类?

Posted

技术标签:

【中文标题】如何将由三重指针组成的矩阵动态分配给一个类?【英文标题】:How can I dynamically allocate matrix that is made from triple pointer to a class? 【发布时间】:2019-12-07 02:45:19 【问题描述】:

这是我的课

    class Map 
        Field*** f;
        int rows;
        int columns;
    ;

如何制作指向类字段的指针矩阵? 我试过了,但它不起作用。

    Map(int rows_, int columns_) : rows(rows_), columns(columns_) 
        f = new Field*[][];
        *f = new Field*[rows];
        for (int i = 0; i < rows; i++) 
            *f[i] = new Field[columns];
        
    

【问题讨论】:

f = new Field*[][]; -- 那应该做什么?您需要指定将有多少个 pointer-to-pointers。编译器无法猜测这个数量——你需要知道它是什么。还有here is a link to a 3D matrix 使用三颗星进行创作(IMO,这不是一件好事)。 【参考方案1】:

你可以考虑重新考虑你在做什么。扁平的一维数组是更好的选择。

如果你仍然想要一个 *** 指针,你可以这样做:

f = new Field**[Row];
for(int i =0; i<Row; i++)
  f[i] = new Field*[Col];
  for(int j =0; j<Col; j++)
    f[i][j] = new Field[H];
    for(int k = 0; k<H;k++)
      f3D[i][j][k] = 0;
    
  

别忘了释放它。

【讨论】:

应该是指向类的指针矩阵,不是3D数组,不过谢谢。

以上是关于如何将由三重指针组成的矩阵动态分配给一个类?的主要内容,如果未能解决你的问题,请参考以下文章

如何从函数返回动态分配的指针数组?

C语言 如何给指针数组划分动态存储空间

如何复制动态分配的对象(具有一个类的 const 成员)

将结构成员指针分配给另一个动态内存分配的指针是不是安全?

如何在Objective-C中动态分配指向对象的指针数组?

如何分配动态静态多维数组