在类中调用lcd对象的函数

Call function on lcd object in class

本文关键字:对象 函数 lcd 调用      更新时间:2023-10-16

目前我正在制作一个打印自定义文本到LCD的类。

我将lcd对象作为构造函数的参数传递给类。

Display.h

#ifndef Display_h
#define Display_h
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include "Arduino.h"
class Display
{
public:
  Display(LiquidCrystal_I2C *outsideLcd);
private:
 LiquidCrystal_I2C *lcd;
};
#endif

Display.cpp

#include "Arduino.h"
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include "Display.h"
Display::Display(LiquidCrystal_I2C *outsideLcd)
{
  lcd = outsideLcd;
  lcd.init();
  lcd.clear();
  lcd.print("Constructor");
}

Example.ino

#include "Display.h"
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
Display display(&lcd);
void setup()
{
}
void loop()
{
}

当我在构造函数中调用lcd对象上的函数时,不断得到这些错误。

Display.cpp: In constructor 'Display::Display(LiquidCrystal_I2C*)':
Display.cpp:16: error: request for member 'init' in '((Display*)this)->Display::lcd', which is of non-class type 'LiquidCrystal_I2C*'
Display.cpp:17: error: request for member 'clear' in '((Display*)this)->Display::lcd', which is of non-class type 'LiquidCrystal_I2C*'
Display.cpp:18: error: request for member 'print' in '((Display*)this)->Display::lcd', which is of non-class type 'LiquidCrystal_I2C*'  

当我在类之外使用LCD对象的函数时,没有问题。我传递对象错误的类吗?

lcd是一个指针

  lcd.init();
  lcd.clear();
  lcd.print("Constructor");

以上几行应按如下方式更正:

 lcd->init();
  lcd->clear();
  lcd->print("Constructor");