在类中引用指针对象时出错

问题描述 投票:0回答:1

尝试访问类中的 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);

}
c++ pointers arduino adafruit
1个回答
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 );

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.