Pointer -> Dynamisches mehrdimensionales Array | Klassen Template
-
Hi,
ich habe da so ein kleines Problem

Ich komme einfach nicht weiter und im Inet habe ich leider auch nicht wirklich was gefunden. Darum hoffe ich hier auf hilfe
Ich hab mir für meine Zwecke aus diesem Topic den Punkt 2 abgekupfert und angepasst.
Ich habe aber ein Problem, wenn ich dort einen Pointer drauf Zeigen lassen möchte. Zu diesem Zweck hier mal ein Bsp.class Simple2DimArr { private: int* pArr; int Rows, Cols; public: Simple2DimArr(int Zeilen, int Spalten) { Rows = Zeilen; Cols = Spalten; // 2-Dimensionales Array auf 1-Dimensionales abbilden pArr = new int[Rows * Cols]; } int* operator[](int int_tmp) { // Array liegt "zeilenweise" im Speicher return &pArr[int_tmp * Cols]; } ~Simple2DimArr() { delete [] pArr; } }; int main() { Simple2DimArr orig(3,3); Simple2DimArr *pointer; pointer = &orig; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { //diese Zeile geht ohne probleme //i wird hier an die funktion oben als int_tmp übergeben cout<<orig[i][j]; //diese Zeile crasht, sobald er i um eins erhöht. //hier wird auch j als int_tmp verwendet cout<<*pointer[i][j]; } cout<<endl; } system("PAUSE"); return 0; }Was mache ich mit meinem Pointer falsch???
---
Wenn ich grade mal dabei bin, ich habe aus dem Array Code schnippsel ein Klassen Template angelegt. Das geht auch problemlos mit primitiven Datentypen. Wenn ich nun aber ein String oder andere Objekte dafür benutzen möchte, knallt mir das Prog um die Ohren. Hat hierzu jemand einen Tipp?
---
Danke schon mal

mamut
-
versuche doch mal
cout << (*pointer)[i][j] << endl;
zu zweitens:
Insgesamt ist es nicht so gut, einen pointer auf die Daten zurückzugeben. Da baut man sich eher eine Proxy-Klasse die sozusagen eine zeile darstellt und auch den op[] anbietet. Dann dürfte es besser klappen.
-
Ich danke dir!!!
Na also
so klappts dann auch mit dem Nachbarn.---
Ansich stimme ich dir zu, aber wofür ich dieses Template gerne butzen würde, wäre für strings.
Wir habe ein Schulprojekt, wo wir ein Spielprogrammieren, was oben und auf der linken Seite Zahlen anzeigt und in der mitte ist ein Spielfeld.
Das Spielfeld und die beiden Seiten stellen bei uns Matrixen da, eben diese dynamischen Array Templates. Das problem ist, die Zahlen sind natürlich ints. Aber das Spielfeld hätten wir gerne als Stringmatrix, da wir dort sowohl Farbcode, als auch Zahlen abspeichern müssen.
Damit ich aber nicht 2 mal den selben Code habe, einmal für strings und für ints, wollte ich das gerne in einer Template Klasse realisieren. Aber mit den Strings geht das leider bei mir nicht