Ich habe hier ein mit dem Arduino verbundenes IC. In dem gibt es Register, die ich lesen und schreiben kann. Jedes dieser Register hat eine Nummer (Adresse). Die Bits in den Registern haben natürlich jeweils ihre Bedeutung.
Jetzt wollte ich das in C++ abbilden. Eine Klasse, die die Gemeinsamkeiten aller Register darstellt. Dazu soll es Funktionen/Methoden geben, um den Registerwert ins IC zu schreiben und um ihn auszulesen. Denen will ich dann ein Objekt eines Erben dieser Klasse übergeben.
Von dieser Klasse müssen also andere Klassen erben.
Die Registeradresse soll öffentlich nur lesbar sein, da ja für jedes Register konstant. Sie ist bei jedem Erben anders.
Der Registerwert als Ganzes soll öffentlich les- und schreibbar sein.
Jeder Erbe soll zusätzlich noch Methoden bekommen, um einzelne Bits zu lesen und/oder zu setzen. Diese Methoden sollen nach der Bedeutung der Bits/Bitfelder im IC benannt sein. Sie lesen bzw. verändern erstmal den im Objekt gespeicherten Registerwert. Sprich man gibt, wenn nötig, vor deren Benutzung das Objekt an die Leseroutine und danach an die Schreibroutine, die ja alle Erben der Registerklasse schlucken können sollen. Diese Routinen sollen dann auf Registeradresse und Registerwert des Objekts zugreifen, um damit ihre Arbeit zu verrichten.
Erstmal hat der C++ Compiler meine Versuche ohne Warnungen oder gar Fehler geschluckt. Aber sobald ich ein Objekt eines Erben nur mal als Ahnen ablegen wollte, ging das Gemeckere los, dass er mir den Operator= gelöscht hätte, weil der ja doch nur Mist machen würde. Oder die Erben hatten die Registeradresse des Vorfahren übernommen. Wild verteilte "virtual" führten zu noch mehr Gemeckere beim Kompilieren.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
Kann mir von Euch jemand helfen, daraus gültigen und funktionierenden C++ - Code zu machen ?