I have a question though on constructor vs setup() use. Could you please give me some more details/examples on what can be put inside the constructor of a class and what should be part of a setup() method?
setup() for anything that calls methods from the arduino liobrary - anything to do with hardware initalisation. pinMode() is the most common thing.
constuctor for stuff that is "pure" C++. Especially for setting const variables.
The point to remember is that the Arduino environment does quite a bit of work before setup() gets called. I don't know what, exactly, but you can't rely on the hardware state being reasonable until then.
Constructors get called ... actually, I don't know when constructors get called. It may even be the case that thinks like assignments to const variables are pulled out by the compiler and baked into the binary image - they never really get executed at all.
I mean … maybe I'm wrong. Maybe it would all be perfectly ok to put things in constructors. But then again, maybe not.
For example, it's common for things like the LCD object provided by a library to have a constructor to assign the pins, but a separate initialize() method to be called in setup().