繁体   English   中英

如何在另一个类中更新一个类的2D数组成员?

[英]How can i update a 2D array member of one class inside another class?

我有一个名为Renderer的类,它有一个名为imageList的图像对象数组和一个名为canvas的2D 80 x 80数组。 每个图像对象都有一个名为shapesList的形状对象数组。 形状可以是直线,四边形,三角形或圆形。

我想在一个名为draw的函数中的渲染器类中更新2D画布数组,该函数位于Line类中。

我尝试使用setter和getter for canvas从Line类中访问它,但它似乎不起作用。 也许我可以通过它的参考? 任何帮助?

class Renderer {

private:
    char **canvas;
    Image **imageList;



//this is the constructor for Renderer
Renderer(){

//allocating mem for canvas
canvas = new char*[80];//height
for (int i = 0; i < 80; ++i) {
    canvas[i] = new char[80]; //width

}

您当前的实现看起来没问题,但通常如果您直接处理char ,您可能希望将canvas作为单个char*

private:
  char canvas[80*80];

这也将确保在堆栈而不是堆上分配内存(除非您需要它在大小上是动态的)。

然后你可以写一个getter并设置如下:

char get(int row, int col) {
  return canvas[row * 80 + col];
}

char set(int row, int col, char val) {
  canvas[row * 80 + col] = val;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM