ElCaron:
Also, ich bin ja kein C++-Crack, aber entweder ich habe da fundamentalere Lücken als ich dachte, oder das ist nicht der beste Link für das Konzept.
Ja, vielleicht ist es nicht ganz der richtige Begriff....
Schien mir allerdings angemessen.
Der gregorss hätte gerne ein riesiges Bitfeld.
In dem er einzelne 6 Bit Worte adressieren kann.
Der Zweck ist wohl Speicher sparen, Schluss mit der 2 Bit verplemperung
Das einfache [] Operator überladen bringt einen nicht weiter, weil die Referenzen, welche man da behandeln muss, immer auf Bytegrenzen liegen. Kein Wunder, denn das Byte ist die kleinste adressierbare Einheit.
Wenn man also ein SpezialArray bauen will, welches aus 100 Worten, jeweils 3 Bit, besteht, kann man schlecht array[4]=2; schreiben, um das Wort mit dem Index 4 zu adressieren.
Das Wort könnte ja sich über Bytegrenzen hinweg erstrecken, irgendwo in einem Byte beginnen.
Darum das Mimikry.
Ein Element (Stellvertreter) schaffen, welches sich wie ein Byte ansprechen lässt, sich wie ein Byte verhält, so aussieht, usw.
Es darf sich halt nur in der internen Breite, von einem Byte unterscheiden.
Dann gehen auch solche Ausdrücke: array[4]=2 oder array[4] <<=1
Überlebenssicherung, durch tarnen als Byte
Ich wünsche mir folgende Syntax:
// bitfeld global definieren, mit 100 Zellen, jede 3 Bit breit
BitFeld<100,3> feld;
// nutzung
void loop()
{
feld[0] = 1; // eine Eins in die erste Zelle schreiben
feld[4]++; // Wert in der Zelle mit dem Index 4 um einen erhöhen
//usw
}