kenny schrieb:
> Ich habe mal fein gelernt das man Variablen in einer private Klasse
> durch Setter (setzten) und Getter (lesen) Funktionen schützt (vor
> un-plausiblen Eingaben).
Die private Variable ist doch geschützt, denn sie ist privat. Es gibt
keine Setter weil man von außen überhaupt nicht drauf zugreifen soll.
Interne (private) Setter sind eher unüblich.
kenny schrieb:
> Ist das beim Arduino Framework nicht nötig
Doch, aber was sollte in den Destruktor dieser Klasse hinein? Wenn eine
Klasse nichts aufzuräumen hat, braucht's auch keinen expliziten
Destruktor. In C++ bekommen Klassen automatisch einen impliziten
Destruktor, welcher einfach nur die Destruktoren der Member-Variablen
aufruft. Da "uint8_t" keinen Destruktor hat, passiert hier also gar
nichts. Außerdem werden von dieser Klasse wahrscheinlich nur globale
Instanzen angelegt, deren Destruktoren ohnehin niemals aufgerufen
werden, weil Mikrocontroller-Programme sich (normalerweise) nie beenden!
Es gibt aber ein ganz anderes Problem: Die Datei definiert ein Makro
namens "_ADAFRUIT_MCP23008_H". Bezeichner, die mit
Unterstrich+Großbuchstabe oder 2 Unterstrichen beginnen, sind aber der
Umgebung, d.h. Compiler+C++ Standard Bibliothek, vorenthalten. Auch wenn
dies in diesem Fall wahrscheinlich keine Probleme verursacht, ist es
trotzdem inkorrektes C++. Außerdem ist es nicht sehr schön, die
Bitmasken für die Register mit Makros ("#define") zu definieren. In C++
ist es möglich und sauberer, Konstanten (mit "const") zu verwenden.
Totomitharry schrieb:
> Da kommt ja niemand Public an und will jetzt einen Zugriff auf eine
> Private Variable haben sondern der Programmierer bestimmt es selbst was
> worauf zugreift.
Exakt genau so ist es beim PC aber auch. "private" schützt auch da nicht
zur Laufzeit, sondern immer nur vor versehentlichen Fehlern...