class TerminalParser {
public:
virtual void whoAmI() {
Serial.println(F("not implemented"));
}
};
class HardwareDisplay : public TerminalParser {
void whoAmI() {
Serial.println(F("HardwareDisplay"));
}
};
class SoftwareDisplay : public TerminalParser {
void whoAmI() {
Serial.println(F("SoftwareDisplay"));
}
};
class PartialDisplay : public TerminalParser {
// whoAmI is not implemented, the default function will be called in the parent class
};
HardwareDisplay h;
SoftwareDisplay s;
PartialDisplay p;
TerminalParser* myDisplays[] = {&h, &s, &p};
void setup() {
Serial.begin(115200); Serial.println();
for (auto & aDisplay : myDisplays) aDisplay->whoAmI();
}
void loop() {}