Witam. Mam klasę:
class matrix{
private:
double **macierz;
msize rozmiar;
public:
matrix(int x, int y);
matrix(msize size);
~matrix();
msize getsize();
double getxy(int x, int y)
{
if(x>=0 && y>=0 && x<rozmiar.x && y<rozmiar.y)
return macierz[x][y];
else return DBL_MAX;
}
bool setxy(int x, int y, double liczba);
{
if (x>=0 && y>=0 && x<rozmiar.x && y<rozmiar.y){
macierz[x][y]=liczba;
return true;
}
else return false;
}
//różne inne funkcje
};
Funkcje setxy() i getxy() są napisane tymczasowo. Chciałbym zamiast nich używać normalnej notacji tablicowej, czyli na przykład mat1[x][y]. W tym celu muszę przeładować operator.
Problem w tym, że nie istnieje operator [][], jest tylko pojedyncze [].
Jak to zrobić?
W Symfonii c++ jest opisany podobny przykład (z przeładowaniem operatora [] dla tablic dwuwymiarowych), ale tam było to zrealizowane w ten sposób, że pojedynczy [] zwracał wskaźnik do wektora liczb, zaś drugi [] był już normalnym operatorem tablicowym, który zwyczajnie wyłuskiwał liczbę z tego wektora (mam nadzieję, że rozumiecie, o co mi chodzi). Jednak to rozwiązanie nie wchodzi w grę, gdyż uniemożliwia mi kontrolę przekroczenia indeksu.
Pytam ponownie: Jak to zrobić?
Na stronie c++ faq jest opisany ten problem, ale tam zamiast [x][y] użyto (x,y). Takie rozwiązanie także nie wchodzi w grę.
Zatem: Jak to zrobić?</cpp>