Hallo,
ich habe eine Frage zur Verwendung von Matrizen in C++
Ich bin dabei mir eine kleine Matrix Klasse zu schreiben. Hier mal
Auszüge
matrix.h
1 | class Matrix
|
2 | {
|
3 | private:
|
4 | double *matrixArr;
|
5 | int Rows, Cols, Planes;
|
6 | public:
|
7 | Matrix(int Zeilen, int Spalten, int Level);
|
8 | ~Matrix();
|
9 | };
|
matrix.cpp
1 | //Konstruktor
|
2 | Matrix::Matrix(int Zeilen, int Spalten, int Level)
|
3 | {
|
4 | Rows = Zeilen;
|
5 | Cols = Spalten;
|
6 | Planes = Level;
|
7 | // Array allokieren
|
8 | matrixArr = new double[Rows * Cols * Planes];
|
9 | }
|
10 | //Dekonstruktor
|
11 | Matrix::~Matrix(){
|
12 | delete [] matrixArr;
|
13 | }
|
Im Konstruktor allokiere ich den Speicher als 1-dimensionales Feld
fürdie Größe eines 3dimensionalen Arrays (korrekt so?)
Wenn ich im Hauptprogramm ein Objekt der Klasse instanziiere, würde ich
dann gerne in der Form matrix[0][0][0] = 1; darauf zugreifen.
Wenn ich das so hinschreibe, dann funktioniert es nicht...was sogar mir
logisch erscheint, da das Programm ja gar keine direkten Informationen
über die Dimensionen meines Arrays hat.
Aber wie bekomme ich denn das hin, das meine gewünschte Zugriffsform
funktioniert?
Muss man dazu [] irgendwie überladen? Ich habe da für 2dimensionale
Arrays
etwas gesehen, aber selbst da habe ich es nicht so ganz verstanden. ich
überlade [] und benutze im Hauptprogramm ja [][] oder in meinem fall
[][][]. Wie soll denn das funktionieren?
Kann mir jemadn mal einen Tip gebenwie das funktioniert? Oder muss ich
den Speicher für mein Array schon ganz anders allokieren?
Danke, Axel