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>