class LogicBoardDevice { public: /// FIXME Can I have a constructor that would be called before concretes? /// Could use this to set up correct reference to UsbPorts. unsigned char query(); /// Send the Message to the UsbPort. unsigned char send(Message); protected: /// The message used to query the device. Should be set in constructors. Message& query_message; private: UsbPort& usb_port; };