class TestClass{
private:
Stream* mySerial = nullptr;
int (*func)(int, int);
public:
TestClass(Stream &ser){
mySerial = &ser;
}
void setExtern(void ((*f))){
func = f;
}
void print(char* s){
if (mySerial != nullptr){
mySerial->print(s);
}
}
void print(String &s){
if (mySerial != nullptr){
mySerial->print(s);
}
}
void println(char *s){
if (mySerial != nullptr){
mySerial->println(s);
}
}
void println(String &s){
if (mySerial != nullptr){
mySerial->println(s);
}
}
void doSomething(){
mySerial->println(func(3,4));
};
};
int multiply(int a, int b){
return a*b;
}
TestClass test(Serial);
String aString = "String object!";
void setup() {
Serial.begin(115200);
Serial.println("Start");
test.println("Hello World");
test.println(aString);
test.setExtern(&multiply);
test.doSomething();
}
void loop() {
}