[C++]Przeciązanie operatora []

0

znalazłem posty na forum na ten temat, ale nie rozwiazuja mojego problemu.
Implementuje tablice bitową i chciałbym aby mozna było się do poszczegolnych bitów odwolywac tak jak do zwykłej tablicy
mam juz operator do czytania
bool operator[] (int i) const;
czyli moge wykonac takie cos

bool b = tablica_bitowa[0];

a teraz chce miec mozliwosc zrobienia takiego czegos

tablica_bitowa[0] = true;

jak to zaimplementowac (nie mozna przeciez zwrocic referencji do pojedynczego bitu)

deklaracja metody wygladac bedzie mniej wiecej tak

Ref operator[] (int i);
gdzie Ref to będzie jakaś pomocnicza klasa, ale nie wiem jak to zaimplementowac.

0
  1. Ameryka już odkryta: std::vector<bool>
  2. Nikt nie wie JAK zaimplementowałeś przechowywanie wartości bool.
0

Zadanie ktorego dotyczy problem to zaprojektowanie i zaimplementowanie klasy w ktorej wartosc (prawda lub falsz) bedzie przechowywana na jednym bicie. Dane sa przechowywane w tablicy 64 bitowych slow. Mam metody czytaj(int i) i pisz(int i, bool b) ktore odczytuja badz zapisuja odpowiedni bit. Chce je ładnie opakować w operator indeksowania []. Problem jest z zapisywaniem, czyli sprawieniem aby działał kod

tab[i] = true;

na razie pomysl mam taki, operator [] zwraca obiekt pewnej klasy pomocniczej, ktora ma przeciazony operator =, ktory wlasnie zapisuje wartosc w odpowiednim bicie. Na razie w takim rozwiazaniu problemu widze wiele uchybien dlatego pytam sie czy zna ktos jakis sposob aby to zaimplementowac. Nie oczekuje gotowego kodu tylko pewien schemat, algorytm.

0

Też właśnie std::vector<bool> z STL libstdc++ ma taką implementację. Jest tam klasa pośrednia _Bit_reference.
Tylko czy musisz mieć zapisujący operator[] ? :>

0

musze ... to jest zadanie na pracownie i takie polecenie mam w jego tresci :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1