Incorporating my new knowledge, I have moved the LCD set up code to the sketch and I am trying to pass the object by reference. This seems to work fine for the receiving function, but if I want to hold on to that for future use by the class, I don't know how to store it as a reference. What I mean is, if I tell the class here's a declaration for later, it tries to construct the object instead of waiting to receive the object later:
.h
class UI {
public:
UI();
void go(hd44780_pinIO & _lcd);
virtual ~UI();
private:
hd44780_pinIO lcd;
//protected:
};
.cpp
UI::UI() {
}
void UI::go(hd44780_pinIO & _lcd) {
lcd = _lcd;
lcd.setCursor(0, 0); // col 1, row 1
lcd.print("*** ***");
}
At compile I get what I would expect:
/Users/ncd/Documents/Arduino/libraries/UIv2/UIv2.cpp: In constructor 'UI::UI()':
/Users/ncd/Documents/Arduino/libraries/UIv2/UIv2.cpp:9:8: error: no matching function for call to 'hd44780_pinIO::hd44780_pinIO()'
UI::UI() {
^
In file included from /Users/ncd/Documents/Arduino/libraries/UIv2/UIv2.h:9:0,
from /Users/ncd/Documents/Arduino/libraries/UIv2/UIv2.cpp:3:
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:113:1: note: candidate: hd44780_pinIO::hd44780_pinIO(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
hd44780_pinIO(uint8_t rs, uint8_t rw, uint8_t en,
^
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:113:1: note: candidate expects 9 arguments, 0 provided
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:98:1: note: candidate: hd44780_pinIO::hd44780_pinIO(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
hd44780_pinIO(uint8_t rs, uint8_t rw, uint8_t en,
^
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:98:1: note: candidate expects 7 arguments, 0 provided
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:81:1: note: candidate: hd44780_pinIO::hd44780_pinIO(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
hd44780_pinIO(uint8_t rs, uint8_t en,
^
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:81:1: note: candidate expects 8 arguments, 0 provided
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:66:1: note: candidate: hd44780_pinIO::hd44780_pinIO(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
hd44780_pinIO(uint8_t rs, uint8_t en,
^
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:66:1: note: candidate expects 6 arguments, 0 provided
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:58:7: note: candidate: constexpr hd44780_pinIO::hd44780_pinIO(const hd44780_pinIO&)
class hd44780_pinIO : public hd44780
^
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:58:7: note: candidate expects 1 argument, 0 provided
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:58:7: note: candidate: constexpr hd44780_pinIO::hd44780_pinIO(hd44780_pinIO&&)
/Users/ncd/Documents/Arduino/libraries/hd44780/hd44780ioClass/hd44780_pinIO.h:58:7: note: candidate expects 1 argument, 0 provided
Using library UIv2 in folder: /Users/ncd/Documents/Arduino/libraries/UIv2 (legacy)
Using library hd44780 at version 1.0.1 in folder: /Users/ncd/Documents/Arduino/libraries/hd44780
exit status 1
Error compiling for board Arduino Nano.
... and maybe it's my imagination, but it seems slower going through the class rather than in the original sketch.