如何在C ++中访问动态分配的矩阵?

尤什·N

我创建了一个动态的类对象矩阵,但是处理返回的指针却使我大为混乱。

我的意图是创建一个类Point(Int x,Int y)的矩阵,然后在程序中以不同的方式使用它。一切正常,但我不知道函数之间返回的指针游戏。

class Point
{
   private:
     int x; 
     int y;
   public:
     Point(int x,int y);
     void SetPoint(int x,int y);

};

在第二个类中,我将Point对象用作类成员。

Init_Pallet()用于初始化矩阵。

class Warehouse
{
   private:
       Robot r1,r2;
       Point *Pallet_Matrix;

   public:
       Point* Init_Pallet();
};

这是初始化功能

Point* Warehouse::Init_Pallet()
{

    int rows =10,cols =10;
    Point** Pallet_Matrix = new Point*[rows];
    for (int i = 0; i < rows; i++)
        Pallet_Matrix[i] = new Point[cols];
    for (int i = 0; i < rows; ++i)
        for (int j = 0; j < cols; j++)     //Pallet matrix Init, x point for robots amount in position and y for box amount
            Pallet_Matrix[i][j].SetPoint(0,0);
    return *Pallet_Matrix;
}

初始化函数由WareHouse C'Tor调用(忽略其他变量)

Warehouse::Warehouse(Robot p_r1,Robot p_r2): r1(p_r1),r2(p_r2)
{
    this->r1=p_r1;
    this->r2=p_r2;
    Point *p =Init_Pallet();
    this->Pallet_Matrix=p;
}

我的问题是:如何将地址从Init函数返回到调用它的C'Tor的矩阵的开头?第二个问题:将矩阵地址返回给C'Tor后,如何以Matrix [i] [j]的格式访问矩阵的不同位置。

预先感谢您提供的所有帮助和时间。

约瑟夫·曼斯菲尔德

您应该只Init_Pallet返回aPoint**然后执行return Pallet_Matrix;当前,您正在复制Point*从该函数中分配s之一,因此该副本不再是可以索引的连续数组的一部分。

不要忘记delete[]析构函数中的动态数组。

但是,您应该更喜欢使用标准库容器,例如std::arraystd::vector这样,您就不必担心自己的动态分配,也无需担心任何麻烦。

如果我这样做,我将只有:

class Warehouse
{
   public:
       Warehouse() : Pallet_Matrix() { }
   private:
       Robot r1,r2;
       std::array<std::array<Point, 10>, 10> Pallet_Matrix;
};

就是这样。没有init必要的。没有动态分配。请勿为每个元素分配0(如果您提供Point默认的构造函数以零初始化)。做完了

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中未知矩阵的动态分配

来自分类Dev

在C中动态分配3D矩阵

来自分类Dev

在动态分配的矩阵中输入值 - C

来自分类Dev

如何在C ++中将逗号分隔的数字矩阵放入动态分配的数组中?

来自分类Dev

如何在C中动态分配静态存储?

来自分类Dev

如何在C ++中引用动态分配的字符数组

来自分类Dev

(SFML,C ++)如何访问动态分配的sf :: VertexArray中的特定sf :: Vertex?

来自分类Dev

c中的字符矩阵(动态分配的二维数组)

来自分类Dev

如何在C ++中删除由动态分配的数组成员组成的动态分配的结构?

来自分类Dev

C ++中的动态分配数组

来自分类Dev

释放C中动态分配的内存

来自分类Dev

C ++中的动态分配错误

来自分类Dev

在C中动态分配线程

来自分类Dev

C ++中的动态分配数组

来自分类Dev

在C中动态分配内存

来自分类Dev

如何在AngularJS中动态分配过滤器

来自分类Dev

如何在Django集合中动态分配别名?

来自分类Dev

如何在React中动态分配属性?

来自分类Dev

如何在函数中动态分配内存?

来自分类Dev

程序崩溃,从C函数访问动态分配的数组

来自分类Dev

如何动态分配熊猫分配中的列名

来自分类Dev

如何在 C++ 中的全局字符数组中动态分配类的实例?

来自分类Dev

如何在Visual Studio 2012 Visual C ++中动态分配内存

来自分类Dev

如何在C ++中对静态动态分配的数组进行静态初始化?

来自分类Dev

如何在C ++中为char数组动态分配内存?

来自分类Dev

如何在for循环中释放C中动态分配的数组

来自分类Dev

如何在C中创建动态分配的字符串?

来自分类Dev

如何在Visual Studio 2012 Visual C ++中动态分配内存

来自分类Dev

如何在C ++中动态分配2D数组?

Related 相关文章

热门标签

归档