xD ouais pas clair tout ça ... Et puis je viens de me rendre compte que HardwareSerial hérite de Stream, d'où ta remarque. Si en plus je me mets à ne plus suivre c'est sûr qu'on va pas s'en sortir ...
Déjà j'ai édité mon message précédent avec les fonctions pour ajouter un des print() pour mon raisonnement.
Je résume : HardwareSerial hérite de stream qui hérite de Print. Me trompe-je ?
Ensuite passons aux questions précises :
-
quand j'appelle Serial.print("Coucou") on appelle donc Print::print et dedans il y a un write() : celui la est-ce bien celui de la classe Print ?
-
si c'est bien ça, dans Print::write() utilise alors un autre write() celui de HardwareSerial j'imagine ? Comment est défini justement le fait que ça appelle ce write() la et pas Print::write ? Simplement le fait qu'il n'y a pas de proto pour write(uint8_t) ? On est d'accord ça ferait tourner en rond mais c'est pas ce qui arrête les compilateurs en général

En fait à force de relire je crois que je finis par comprendre comment ça se passe et pourquoi il faut autant de virtual. Il y a deux choses qui me turlupine vraiment concernant le HardwareSerial.h :
virtual size_t write(uint8_t) ==> pourquoi un virtual ? Simple précaution ?
using Print::write ==> utilité ? puisqu'il y a un write() dans HarwareSerial, Print::write() va se faire écraser ?