Javaprogrammer
Grünschnabel
Hallo,
schreibe gerade an einem Programm das im Prinzip eine Matrix darstellt. Das Problem dabei ist, dass das Program wahrend der Laufzeit uberprufen soll ob die Richtigen Bereiche des Arrays angesprochen werden. Habe z.B. ein Objekt a[3][4]. Wenn ich jetzt versuchen will a[2][7] = 10 zuzuweisen, dann soll logischerweise eine Fehlermeldung kommen.
Ich uberlade den subscript Operator [] allerdings habe ich das Problem das ich nur den Bereich der Reihen uberprufen kann, aber nicht der Spalten.
Das uberladen des Operators funktioniert ohne Probleme nur kann ich zu keiner Zeit auf die Spalten zugreifen.
War eigentlich der Meinung, dass Operator [] zweimal aufgerufen wird und beim ersten mal i den Wert der Zeilen hat und beim zweiten mal den Wert der Spalten... Tatsache ist, dass der Aufruf nur einmal erfolgt.
Hat jemand einen Tip wie ich doch noch auf die Spalten zugreifen kann um festzustellen ob die Werte in [ ][ ] im Bereich meines Arrays sind?
Schon mal Danke
Die Datenstruktur sieht ungefahr so aus:
schreibe gerade an einem Programm das im Prinzip eine Matrix darstellt. Das Problem dabei ist, dass das Program wahrend der Laufzeit uberprufen soll ob die Richtigen Bereiche des Arrays angesprochen werden. Habe z.B. ein Objekt a[3][4]. Wenn ich jetzt versuchen will a[2][7] = 10 zuzuweisen, dann soll logischerweise eine Fehlermeldung kommen.
Ich uberlade den subscript Operator [] allerdings habe ich das Problem das ich nur den Bereich der Reihen uberprufen kann, aber nicht der Spalten.
Das uberladen des Operators funktioniert ohne Probleme nur kann ich zu keiner Zeit auf die Spalten zugreifen.
War eigentlich der Meinung, dass Operator [] zweimal aufgerufen wird und beim ersten mal i den Wert der Zeilen hat und beim zweiten mal den Wert der Spalten... Tatsache ist, dass der Aufruf nur einmal erfolgt.
Hat jemand einen Tip wie ich doch noch auf die Spalten zugreifen kann um festzustellen ob die Werte in [ ][ ] im Bereich meines Arrays sind?
Schon mal Danke

Die Datenstruktur sieht ungefahr so aus:
Code:
template <typename T>
class Matrix {
private:
int rlow, rhigh, clow, chigh;
T **arr;
public:
Matrix(int r, int c) {
rlow = 0;
rhigh = r - 1;
clow = 0;
chigh = c - 1;
arr = new T * [r];
for (int i = 0; i < r; i++)
arr[i] = new T [ c];
}
...
...
T* operator[](int i) {
int row = i - rlow;
if (i < rlow || i > rhigh) {
cout << "First array is out of index" << endl;
exit(1); }
return (arr[row]);
}
...
...
};