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

时间:2019-04-28 00:01:23

标签: c++

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

我想从Line类中名为draw的函数中的renderer类更新2D canvas数组。

我尝试制作一个setter和getter以便画布从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

}

1 个答案:

答案 0 :(得分:0)

您当前的实现看起来不错,但是通常如果您直接处理char,可以使用以下方法将canvas设为单个char*

private:
  char canvas[80*80];

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

然后,您可以编写一个吸气剂并进行如下设置:

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

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