我有一个名为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]));
}
}
星号和/或括号的哪种组合可以起作用?
答案 0 :(得分:0)
您应该返回对数组的引用,而不是指针。我还建议为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;
};
为简洁起见,您可以在调用auto
时使用getBuffer
来推断此类型:
auto& buff = engine->getBuffer(); // reference to the buffer