我有一个名为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
}
答案 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;
}