从类返回 2D 数组指针

Returning 2D array pointer from class

本文关键字:数组 指针 2D 返回      更新时间:2023-10-16

>我有一个名为Engine的类,它保存并返回一个缓冲区,如下所示:

template <int width, int height, int meshSize>
class Engine {
    public:
        byte buffers[2][width][height];
        byte fBuffer = 0;
        byte** getBuffer() {
            return buffers[fBuffer];
        };
}

我想遍历我的主要值,但我似乎无法让它工作。

byte* buff;
// main
buff = engine->getBuffer();
for (int x = 0; x < 320; x++) {
    for (int y = 0; y < 320; y++) {
        if (buff[x][y] != NULL) {
            Serial.println(buff[x][y]);
        }
        // lcd.drawPixel(x, y, RGB(buff[x][y], buff[x][y], buff[x][y]));
    }
}

星号和/或括号的什么组合将起作用?

你应该返回对数组的引用,而不是指针。我还建议为只读操作提供const重载getBuffer

template <int width, int height, int meshSize>
class Engine {
public:
    using BufferType = byte[width][height];
    BufferType const& getBuffer() const {
        return buffers[fBuffer];
    };
    BufferType& getBuffer() {
        return buffers[fBuffer];
    };
private:
    BufferType buffers[2];
    byte fBuffer = 0;
};

简洁起见,在调用getBuffer时,可以使用auto来推断此类型:

auto& buff = engine->getBuffer(); // reference to the buffer