Witam!
Piszę program w c++ i chcę tak przeładować operator [] abym mógł do elementów w pliku binarnym odwoływać się za pomocą wyrażęnia tab[a][b][c].
Wiem jak przeładować operator [] dla tablicy jedno i dwuwymiarowej natomiast nie mam zielonego pojęcia jak się za to zabrać jeśli chodzi o 3 lub więcej wymiarów.
Z góry dziękuje za pomoc!!!
pozdro.
0
1
To jest bardzo proste.
Rozwiązania są dwa:
- Proste. Użyj operator() - on może mieć dowolną ilość argumentów.
- Bardziej skomplikowane: Musisz stworzyć klasy pomocnicze, które pozwolą na dostęp do fragmentu danych. Czyli
class TwojaKlasa;
class SubVector {
public:
...
TypTwoichDanych& operator[](int i);
const TypTwoichDanych& operator[](int i) const;
private:
TwojaKlasa* data;
int indexPodmacierzy;
int indexPodwektora;
}
class SubMatrix {
public:
...
SubVector operator[](int i);
const SubVector operator[](int i) const;
private:
TwojaKlasa* data;
int indexPodmacierzy;
}
class TwojaKlasa{
public:
...
SubMatrix operator[](int i);
const SubMatrix operator[](int i) const;
}
0
Dzięki bardzo za pomoc znalazlem troche inne rozwiązanie aby nie odwoływać się do tablicy 3- wymiarowej tylko do dwu.
Jednak na pewno po napisaniu porgramu postaram sie zrobić tak jak ty radziłeś choćby po to aby sie nauczyć czegoś:)
jeszcze raz wielkie dzięki.