Передача объекта в класс

Patriot
Offline
Зарегистрирован: 25.06.2015

Всем привет! Знаю только базовый C, хочу чуть освоиться с C++ с ООП. И сразу прям затык с ходу :(

В общем имеется простой скетч:

#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_ILI9341.h>
#include <XPT2046_Touchscreen.h>
#include "MainMenuScreen.h"

#define TFT_DC 2
#define TFT_CS 15
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
XPT2046_Touchscreen ts(4, 5);

MainMenuScreen screen(ts, tft);

void setup(void) {
  tft.begin();
  ts.begin();
  tft.fillScreen(ILI9341_BLACK);
  screen.draw();
}

void loop()
{
}

 

Файл MainMenuScreen.h:

#ifndef MainMenuScreen_h
#define MainMenuScreen_h
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <XPT2046_Touchscreen.h>

class MainMenuScreen {

  public:
    MainMenuScreen(XPT2046_Touchscreen &ts, Adafruit_ILI9341 &tft);
    void drawScreen();
  protected:
    Adafruit_GFX_Button button;
    XPT2046_Touchscreen *ts;
    Adafruit_ILI9341 *tft;
};

#endif

Файл MainMuneScreen.cpp:

#include "MainMenuScreen.h"

    MainMenuScreen::MainMenuScreen(XPT2046_Touchscreen &ts, Adafruit_ILI9341 &tft) 
    {
      this->ts = &ts;
      this->tft = &tft;
    }

    void MainMenuScreen::drawScreen()
    {
      tft->fillScreen(ILI9341_BLACK);
      button.initButton(
        &tft, 30, 120, 60, 240, ILI9341_DARKCYAN, ILI9341_BLUE, ILI9341_GREENYELLOW, "Кормление", 2);
      button.drawButton();
    }

Что хочу сделать: в классе объявить переменные соответствующего типа: для дисплея и для тачсенсора. Через конструктор передать объекты tft и ts по ссылке и положить в соответствующие переменные. Далее с ними работать внутри класса. Помогите правильно сделать на данном примере, а то опыт только с PHP, а там все по другому :( 

 

 

 

 

Patriot
Offline
Зарегистрирован: 25.06.2015

О, вроде решил! Надо такого вида конструктор делать:

MainMenuScreen::MainMenuScreen(XPT2046_Touchscreen &ts, Adafruit_ILI9341 &tft): ts(ts), tft(tft) {}

Может кто объяснить, что обозначает двоеточие и что происходит?:)

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Patriot пишет:
Может кто объяснить, что обозначает двоеточие и что происходит?:)
Вы что издеваетесь.

Вот я тоже смотрю на запись 2х2=4 . И не понимаю почему буква x между двойками и двойной минус (=)перед 4. Может вы мне подскажите ;)

И да не обязательно заводить их через конструтор. Можно просто передать указатель и через указатель пользовать. Есть еще множественное наследование .  И много еще чего. Но все эти трюки громозки если вы не привыкли работе с ними.