Ja, wobei das Arduino-C++ und ISO-C++ unterschiedliche Dinge sind.
Wieso das denn?
Wer hat dir den Mist denn erzählt?
Oder hast du dir das nur ausgedacht?
Der gcc ist ISO C++ plus ein paar Erweiterungen
pixel pixel[5];
kein Problem.
In der Arduino Welt auch nicht!
(wenn man auf die korrekten Sichtbarkeiten/Gültigkeitsbereiche achtet)
Es ist nur eine schlampige Arbeit des Programmierers.
Und diese Schlampigkeit verdeckt die richtige, die aussagekräftige, Meldung.
Das Ei mit den Sichtbarkeiten hast du dir selbst gelegt,
> display::show().
Dazu noch die Schlampigkeit mit dem Klassenbezeichner, und die Meldung führt in die Irre. Und zu Fehlschlüssen in deinem Hirn.
Grundsätzlich:
Wer die Style Guidelines missachtet, nagelt sich selber eine Frikadelle ans Knie.
Es gibt ja Gründe für diese Guidelines, und einen davon hast du jetzt gefunden.
Also nochmal: (im klartext)
Dein Programm, so wie du es gepostet hast, kompiliert perfekt, wenn man an der einen Stelle das display:: hinzufügt.
Dass pixel pixel[5]; nicht funktioniert ist eine Falschaussage von dir.
Besser wäre natürlich wenn die Klasse nicht pixel, sondern Pixel heißt.
Dann wäre die Meldung aussagekräftiger und du hättest den Fehler sicherlich selber gefunden.