Witam.
Mam napisaną klasę macierz w której mam przeciążony oprerator indeksowania:
class Macierz
{
private:
const int N;
const int M;
float **tab;
public:
Macierz() : N(4), M(4)
{
tworzMacierz();
}
Macierz(int x, int y) : N(x), M(y)
{
tworzMacierz();
}
Macierz(Macierz &ob): N(ob.getN()), M(ob.getM())
{
tworzMacierz();
}
~Macierz()
{
for(int i=0;i<M;i++)
{
delete[] tab[i];
}
delete [] tab;
}
void tworzMacierz();
inline const int getN()
{
return N;
}
inline const int getM()
{
return M;
}
void wypisz()
{
for(int i = 0;i < M ;i++)
{
for(int j = 0; j<N;j++)
cout << this[i][j] << " ";
cout << endl;
}
}
float * operator[](int x )
{
return tab[x];
}
Wszystko działa ładnie gdy używam obiektów automatycznych(Lub wyłuskuje obiekt dynamiczy przed indeksowaniem). Ale gdy indeksuje bezpośrednio obiekt dynamiczy program się zawiesza. Czy istnieje sposób żeby przeciążyć operator indeksowania żeby działał na wskaźniku na klasę tak samo jak na klasie automatycznej. Docelowo chodzi o to żeby następujący kod działał bez problemów:
Macierz * mac = new Macierz(5,5);
mac[2][2]=3;
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
cout << mac[i][j] << " - ";
cout << endl;
}