Cant declare class of Adafruit_ILI9341

I want to make a wraper class to controll a 2.4 Inch TFT display using the Adafruit_ILI9341 and XPT2046 libary's. So I wanted to make a class displayHandler that i can use in my main.cpp but it is giving me a bit of a hard time.

In the displayHandler.h I declared Adafruit_ILI9341 tft; and XPT2046_Touchscreen ts; I made them private, and only want to share them in the displayHandler.cpp file. So i can use tft. in other funtions.

it has something to do with Adafruit_ILI9341 tft;

displayHandler.h

#ifndef DISPLAYHANDLER_H
#define DISPLAYHANDLER_H

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <XPT2046_Touchscreen.h>

/* PARAMETERS STANDARD TFT AND TS*/ 
#define TFT_CS              D0 
#define TFT_DC              D8  
#define TS_CS               D3 
#define TFT_RST             -1

#define DISPLAY_ROTATION    3
#define TOUCH_ROTATION      1

class displayHandler {
    public:
        displayHandler(uint8_t tftCs = TFT_CS, 
                       uint8_t tftDc = TFT_DC, 
                       uint8_t tftRst = TFT_RST, 
                       uint8_t tsCs = TS_CS,
                       uint8_t displayRotation = DISPLAY_ROTATION,
                       uint8_t touchRotation = TOUCH_ROTATION);
        void showInitScreen();
    private:    
        Adafruit_ILI9341 tft;
        XPT2046_Touchscreen ts;
};

#endif // DISPLAYHANDLER_H

displayHadler.cpp

#include <displayHandler.h>

displayHandler::displayHandler(uint8_t tftCs, uint8_t tftDc, uint8_t tftRst, uint8_t tsCs, uint8_t displayRotation, uint8_t touchRotation){
    tft = Adafruit_ILI9341(tftCs, tftDc, tftRst);
    XPT2046_Touchscreen ts(TS_CS);
    ts.begin();
    ts.setRotation(touchRotation);
    tft.begin();
    tft.setRotation(displayRotation);
}

Exactly what would "it" be? Posting PICTURES of error messages is useless. Copy and post the complete error messages. Post them in Code Tags just like you did with your program's code.

Also:
See Case #3 here: https://www.geeksforgeeks.org/when-do-we-use-initializer-list-in-c/

The terminal process "C:\Users\Stefan de Kraker\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1.

Terminal will be reused by tasks, press any key to close it.

> Executing task in folder iot-krakers: C:\Users\Stefan de Kraker\.platformio\penv\Scripts\platformio.exe run <

Processing d1_mini (platform: espressif8266; board: d1_mini; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/d1_mini.html
PLATFORM: Espressif 8266 (3.2.0) > WeMos D1 R2 and mini
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
 - framework-arduinoespressif8266 3.30002.0 (3.0.2)
 - tool-esptool 1.413.0 (4.13)
 - tool-esptoolpy 1.30000.201119 (3.0.0)
 - toolchain-xtensa 2.100300.210717 (10.3.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 46 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Adafruit GFX Library> 1.10.12
|   |-- <SPI> 1.0
|   |-- <Adafruit BusIO> 1.9.2
|   |   |-- <Wire> 1.0
|   |   |-- <SPI> 1.0
|   |-- <Wire> 1.0
|-- <Adafruit ILI9341> 1.5.9
|   |-- <Adafruit GFX Library> 1.10.12
|   |   |-- <SPI> 1.0
|   |   |-- <Adafruit BusIO> 1.9.2
|   |   |   |-- <Wire> 1.0
|   |   |   |-- <SPI> 1.0
|   |   |-- <Wire> 1.0
|   |-- <SPI> 1.0
|-- <Adafruit BusIO> 1.9.2
|   |-- <Wire> 1.0
|   |-- <SPI> 1.0
|-- <XPT2046_Touchscreen> 0.0.0-alpha+sha.26b691b2c8
|   |-- <SPI> 1.0
|-- <displayHandler>
|   |-- <Adafruit GFX Library> 1.10.12
|   |   |-- <SPI> 1.0
|   |   |-- <Adafruit BusIO> 1.9.2
|   |   |   |-- <Wire> 1.0
|   |   |   |-- <SPI> 1.0
|   |   |-- <Wire> 1.0
|   |-- <Adafruit ILI9341> 1.5.9
|   |   |-- <Adafruit GFX Library> 1.10.12
|   |   |   |-- <SPI> 1.0
|   |   |   |-- <Adafruit BusIO> 1.9.2
|   |   |   |   |-- <Wire> 1.0
|   |   |   |   |-- <SPI> 1.0
|   |   |   |-- <Wire> 1.0
|   |   |-- <SPI> 1.0
|   |-- <Wire> 1.0
|   |-- <XPT2046_Touchscreen> 0.0.0-alpha+sha.26b691b2c8
|   |   |-- <SPI> 1.0
Building in release mode
Compiling .pio\build\d1_mini\src\main.cpp.o
Archiving .pio\build\d1_mini\lib4e4\libAdafruit GFX Library.a
Indexing .pio\build\d1_mini\lib4e4\libAdafruit GFX Library.a
Compiling .pio\build\d1_mini\lib178\displayHandler\displayHandler.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\LwipDhcpServer.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\LwipIntf.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\LwipIntfCB.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\MD5Builder.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\Print.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\Schedule.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\StackThunk.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\StreamSend.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\TypeConversion.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\Updater.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\WString.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\abi.cpp.o
Compiling .pio\build\d1_mini\FrameworkArduino\aes_unwrap.cpp.o
lib\displayHandler\displayHandler.cpp: In constructor 'displayHandler::displayHandler(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)':
lib\displayHandler\displayHandler.cpp:3:138: error: no matching function for call to 'Adafruit_ILI9341::Adafruit_ILI9341()'
    3 | displayHandler::displayHandler(uint8_t tftCs, uint8_t tftDc, uint8_t tftRst, uint8_t tsCs, uint8_t displayRotation, uint8_t touchRotation){
      |                                                                                                                                          ^
In file included from lib\displayHandler/displayHandler.h:6,
                 from lib\displayHandler\displayHandler.cpp:1:
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:144:3: note: candidate: 'Adafruit_ILI9341::Adafruit_ILI9341(tftBusWidth, int8_t, int8_t, int8_t, int8_t, int8_t, int8_t)'
  144 |   Adafruit_ILI9341(tftBusWidth busWidth, int8_t d0, int8_t wr, int8_t dc,
      |   ^~~~~~~~~~~~~~~~
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:144:3: note:   candidate expects 7 arguments, 0 provided
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:139:3: note: candidate: 'Adafruit_ILI9341::Adafruit_ILI9341(int8_t, int8_t, int8_t)'
  139 |   Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _RST = -1);
      |   ^~~~~~~~~~~~~~~~
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:139:3: note:   candidate expects 3 arguments, 0 provided
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:137:3: note: candidate: 'Adafruit_ILI9341::Adafruit_ILI9341(int8_t, int8_t, int8_t, int8_t, int8_t, int8_t)'
  137 |   Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK,
      |   ^~~~~~~~~~~~~~~~
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:137:3: note:   candidate expects 6 arguments, 0 provided
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:135:7: note: candidate: 'constexpr Adafruit_ILI9341::Adafruit_ILI9341(const Adafruit_ILI9341&)'
  135 | class Adafruit_ILI9341 : public Adafruit_SPITFT {
      |       ^~~~~~~~~~~~~~~~
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:135:7: note:   candidate expects 1 argument, 0 provided
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:135:7: note: candidate: 'constexpr Adafruit_ILI9341::Adafruit_ILI9341(Adafruit_ILI9341&&)'
.pio\libdeps\d1_mini\Adafruit ILI9341/Adafruit_ILI9341.h:135:7: note:   candidate expects 1 argument, 0 provided
lib\displayHandler\displayHandler.cpp:3:138: error: no matching function for call to 'XPT2046_Touchscreen::XPT2046_Touchscreen()'
    3 | displayHandler::displayHandler(uint8_t tftCs, uint8_t tftDc, uint8_t tftRst, uint8_t tsCs, uint8_t displayRotation, uint8_t touchRotation){
      |                                                                                                                                          ^
In file included from lib\displayHandler/displayHandler.h:7,
Compiling .pio\build\d1_mini\FrameworkArduino\base64.cpp.o
                 from lib\displayHandler\displayHandler.cpp:1:
.pio\libdeps\d1_mini\XPT2046_Touchscreen/XPT2046_Touchscreen.h:44:12: note: candidate: 'constexpr XPT2046_Touchscreen::XPT2046_Touchscreen(uint8_t, uint8_t)'
   44 |  constexpr XPT2046_Touchscreen(uint8_t cspin, uint8_t tirq=255)
      |            ^~~~~~~~~~~~~~~~~~~
.pio\libdeps\d1_mini\XPT2046_Touchscreen/XPT2046_Touchscreen.h:44:12: note:   candidate expects 2 arguments, 0 provided
.pio\libdeps\d1_mini\XPT2046_Touchscreen/XPT2046_Touchscreen.h:42:7: note: candidate: 'constexpr XPT2046_Touchscreen::XPT2046_Touchscreen(const XPT2046_Touchscreen&)'
   42 | class XPT2046_Touchscreen {
      |       ^~~~~~~~~~~~~~~~~~~
.pio\libdeps\d1_mini\XPT2046_Touchscreen/XPT2046_Touchscreen.h:42:7: note:   candidate expects 1 argument, 0 provided
.pio\libdeps\d1_mini\XPT2046_Touchscreen/XPT2046_Touchscreen.h:42:7: note: candidate: 'constexpr XPT2046_Touchscreen::XPT2046_Touchscreen(XPT2046_Touchscreen&&)'
.pio\libdeps\d1_mini\XPT2046_Touchscreen/XPT2046_Touchscreen.h:42:7: note:   candidate expects 1 argument, 0 provided
*** [.pio\build\d1_mini\lib178\displayHandler\displayHandler.cpp.o] Error 1

Did you read the reference I provided?

It looks like classes Adafruit_ILI9341 and XPT2046_Touchscreen don't have a constructor that takes "0 arguments".

To have those objects inside your class you have to construct them at the same time your class is constructed. To do that, you pass the required constructor arguments like this:

displayHandler::displayHandler(uint8_t tftCs, uint8_t tftDc, uint8_t tftRst, uint8_t tsCs, uint8_t displayRotation, uint8_t touchRotation)
   : 
    tft(tftCs, tftDc, tftRst),  // Construct 'tft' object
    ts(TS_CS) // Construct 'ts' object
{
1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.