Programowanie Obiektowe / Klasy / Dziedziczenie - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Programowanie Obiektowe / Klasy / Dziedziczenie (/watek-programowanie-obiektowe-klasy-dziedziczenie) |
Programowanie Obiektowe / Klasy / Dziedziczenie - shammmanek - 19-11-2020 Witam serdecznie forumowiczów. Jest to mój pierwszy post tutaj. Bardzo prosze o pomoc i wyjaśnienie głupiego problemu. Uważam, że problem dotyczy dziedziczenia do którego chyba źle podchodzę lecz już wyjaśniam. Szykując sobie program na arduino postanowiłem Obsługę menu przenieść sobie do osobnej biblioteki/klasy. #include "Menu.h" #include <Arduino.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); Menu::Menu(){ Serial.begin(9600); Serial.println("Tu bylem...TEST"); //lcd.begin(20,4); // lcd.clear(); // lcd.init(); // lcd.init(); // initialize the lcd // lcd.backlight(); } Problem polega na tym że, gdy tylko odkomentuję przykładowo lcd.Init w konstruktorze klasy wszystko wisi.... Gdy obiekt lcd jest zakomentowany w momencie utworzenia instansji pojawia sie testowo napis "Tu byłem..." gdy przykładowo odremuje lcd.init() napis testowy nawet się nie pojawi. W czym tkwi problem ? Czy klasa w całości powinna dziedziczyć po LiquidCrystal...??? Jak powinien wyglądać prawydłowy zapis ? class Menu::Liquid.... { } ???? Bardzo serdecznie dziękuję za każdy pomocny post. Oczywiście klasa rozbita na pliki cpp oraz h... nie zapomniałem o properties itp. Problem dotyczy wywołania obiektu lcd. RE: Programowanie Obiektowe / Klasy / Dziedziczenie - Robson Kerman - 21-11-2020 Dziedziczenie tak nie działa. Jeżeli chcesz dziedziczyć po klasie, to robisz to tak: Kod: class menu : public liquidcrystali2c Wtedy wszystkie metody, pola itd. klasy liquidcrystali2c będą dostępne dla klasy menu. Np: Kod: class klasa1 Można oczywiście dziedziczyć po wielu klasach: Kod: class dziedzic : public klasa1, public klasa2, public klasa3{}; |