将对象作为参数传递给另一个类 C++ 的构造函数

sor*_*tal 0 c++ arduino

我正在尝试使用 Nokia5110 LCD 创建一个用户界面类,用于显示从 API 检索的天气预报,但是当我尝试将对 .ino 的引用传递给Adafruit_PCD8544 Object构造函数时,出现错误班级。

一些帮助将受到高度赞赏。我得到的错误:

“错误:没有匹配的函数可调用 Adafruit_PCD8544::Adafruit_PCD8544()

这是 main.ino 文件:

// Nokia 5110 LCD pinout connections to nodeMCU8266
#define CLK_PIN D1  // Serial clock out (SCLK)
#define DIN_PIN D2  // Serial data out (DIN)
#define DC_PIN  D5  // Data/Command select (D/C)
#define CS_PIN  D6  // lCD chip select (CS)
#define RST_PIN D4  // LCD reset (RST)

Adafruit_PCD8544 display = Adafruit_PCD8544(CLK_PIN, DIN_PIN, DC_PIN, CS_PIN, RST_PIN);
UI_Nokia5110 UI(display);
Run Code Online (Sandbox Code Playgroud)

这是 UI.h 的头文件:

#ifndef UI_WEATHER_API_H
#define UI_WEATHER_API_H

#include <Arduino.h>

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

class UI_Nokia5110{
  private:
    Adafruit_PCD8544 display ;
  public:
    UI_Nokia5110(){}
    UI_Nokia5110(Adafruit_PCD8544 &display);
    
};
#endif
Run Code Online (Sandbox Code Playgroud)

这里,实现UI.cpp

#include "UI_Nokia5110.h"

UI_Nokia5110::UI_Nokia5110(Adafruit_PCD8544 &display){
  this->display = display;
}
Run Code Online (Sandbox Code Playgroud)

for*_*818 5

成员在构造函数体执行之前初始化。构造函数主体不是初始化成员的地方。如果您不提供初始值设定项,display则将默认构造该成员。该错误表明Adafruit_PCD8544没有默认构造函数。使用成员初始值设定项列表:

UI_Nokia5110::UI_Nokia5110(Adafruit_PCD8544 &display) : display(display) {
    // nothing to be done here, members are already initialized
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅https://en.cppreference.com/w/cpp/language/constructor