Arduino wrap or subclass print() to work with multiple Serial
You can create a class derived from Print that forwards its output to
either or both Serial and Serial1. The only method you need to
implement for this to work is write(uint8_t):



class DualPrint : public Print
{
public:
    DualPrint() : use_Serial(false), use_Serial1(false) {}
    virtual size_t write(uint8_t c) {
        if (use_Serial) Serial.write(c);
        if (use_Serial1) Serial1.write(c);
        return 1;
    }
    bool use_Serial, use_Serial1;
} out;


You would use it like this:

out.use_Serial = true;
out.println("Printed to Serial only");
out.use_Serial1 = true;
out.println("Printed to both Serial and Serial1");
out.use_Serial = false;
out.println("Printed to Serial1 only");


Note that with this approach, unlike yours, printing number will format
them as text only once, and the underlying Serial and Serial1 will
only handle the resulting characters.



Edit: To answer the question in OP's comment, the construct

class ClassName
{
    ...definition...
} classInstace;


is a shotcut for

class ClassName
{
    ...definition...
};
ClassName classInstace;


A very similar construct exists in plain C:

struct struct_name {
    ...the struct fields...
} struct_instance;