尝试访问类中的 Adafruit 库。尝试引用 TFT 显示器的指针对象时出现此错误。在这条线上。如果代码不在一个奇怪的类中,它就可以工作。
_reader->drawBMP("/background.bmp", _tft, 0, 0);
a reference of type "Adafruit_SPITFT &" (not const-qualified) cannot be initialized with a value of type "Adafruit_ST7789 *"
主要.cpp
SdFat SD; // SD card filesystem
Adafruit_ImageReader reader(SD); // Image-reader object, pass in SD filesys
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
Info info(&tft, &reader, debug);
信息.h
#ifndef INFO_H
#define INFO_H
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7789.h>
#include <SdFat.h> // SD card & FAT filesystem library
#include <Adafruit_SPIFlash.h> // SPI / QSPI flash library
#include <Adafruit_ImageReader.h> // Image-reading functions
class Info {
public:
Info(Adafruit_ST7789 *tft, Adafruit_ImageReader *reader, bool debug);
void GenerateInfo();
private:
Adafruit_ST7789 *_tft;
Adafruit_ImageReader *_reader;
bool _debug;
};
#endif // INFO_H
信息.cpp
#include "Info.h"
#include <Arduino.h> // Include Arduino here if needed
Info::Info(Adafruit_ST7789 *tft, Adafruit_ImageReader *reader, bool debug)
{
_tft = tft;
_reader = reader;
_debug = debug;
}
void Info::GenerateInfo()
{
// Background
_reader->drawBMP("/background.bmp", _tft, 0, 0);
}
答案在评论里,并得到了用户的同意。
*看起来您可能正在尝试将指针塞入为参考而构建的孔中。如果您取消引用指针以获取它指向的对象,即 _reader->drawBMP("/background.bmp", _tft, 0, 0);,以便 drawBMP 可以引用该对象,会发生什么?
背景。在 C++ 中,可以有指针和引用。指针是获取对象地址的变量,而引用是对象的一种别名。引用通常被认为是执行指针的另一种方式,但我相信根据书本,它们不一定是这样。
考虑这些功能。
void drawBmpReference( std::string mypath, Adafruit_ST7789& something)
void drawBmpPointer( std::string mypath, Adafruit_ST7789 *something)
那么,鉴于此:
Adafruit_ST7789 AdaItem;
Adafruit_ST7789 *pAdaItem;
您可以通过以下方式致电:
void drawBmpReference( "blah", AdaItem );
void drawBmpPointer( "blah", &AdaItem );
void drawBmpReference( "blah", *pAdaItem );
void drawBmpPointer( "blah", pAdaItem );
希望有帮助