Hallo,
Ich habe vor eine Klasse für ein GPIO-Modul (AVR32) zu erstellen und
diese Klasse mit dem [ ] - operator zu überladen.
Das heißt, dass folgendes möglich sein soll:
1 | uint8_t Gpio4Value = KlassenInstanz[4]; //GPIO lesen
|
2 | KlassenInstanz[4] = 1; //GPIO Setzen
|
Der erste Fall sollte ja ohne Probleme gehen, wenn ich dafür folgende
Memberfunktion programmiere:
1 | uint8_t Klasse::operator[](uint8_t Gpio)
|
2 | {
|
3 | //GPIO lesen und Wert zurückgeben
|
4 | }
|
Allerdings kann ich so den operator[] nicht als LValue benutzen - ist
mir auch völlig klar warum.
Rein theoretisch sollte es aber möglich sein, dieser Klasse ein Attribut
hinzuzufügen, das vom Typ einer weiteren Klasse ist (Nenne ich sie mal
DummyKlasse) und eine Referenz auf diese Klasse beim operator[]
zurückzugeben.
Nun kann ich die DummyKlasse mit dem operator= überladen und dort eine
Schreibroutine einbauen.
Das Problem ist aber nun, dass ich immer die DummyKlasse zurückgeliefert
bekomme. Auch im ersten Falle (GPIO lesen).
Frage nun: Wie gestalte ich irgendwie eine Unterscheidung der operator[]
Funktion. Beziehungsweise: Kann ich die DummyKlasse mit einer weiteren
Funktion überladen, die sich auf uint8_t (im obigen Falle) sinnvoll
casten lässt?
Ich hoffe das Problem ist herübergekommen und danke schonmal für jede
Hilfe.