Problemi nell'utilizzo di stringhe in librerie esterne

Una classe può essere resa printable grazie alla classe Printable del core di Arduino, un esempio è la classe IPAddress() della libreria Ethernet.

Un esempio sciocco:

#include <Printable.h> 

class IGOR : public Printable {
public:
  IGOR();
  virtual size_t printTo(Print& p) const;   // necessary  to be "Printable"
private:
  int num;
};

IGOR::IGOR() { num=123; }

size_t IGOR::printTo(Print& p) const
{ size_t n = 0;
  char buf[10];
  snprintf(buf,10,"%05d",num);
  for (int i =0; i < 5; i++)
  { n += p.print(buf[i]);
  }
  return n;
}

IGOR objIgor;

void setup()
{ delay(1000);
  Serial.begin(9600);
  Serial.println("go");
  Serial.println(objIgor);
}

void loop() {}