zeiger des 2 dimensionalen arrays kopieren
-
hi,
ich hab in meinem projekt ein 2 dimensionales array. dieses array muss für eine instanz einer eigenen klasse bekannt gemacht werden
beispiel:class meineklasse { char **dasarray; }; meineklasse:meineklasse (char **arr) { dasarray = arr; } main () { char *array[9][9]; meineklasse *klasse = new meineklasse(array); }so in dem text is natürlich alles grottenfalsch (sry)
also könnt ihr bitte schreiben wie ich jetzt des array an die klassse übergeb?
danke!
-
Ein Array ist syntaktisch wie ein konst. Zeiger zu behandeln.
Ohne die Größeninformation kann die Klasse mit dem Array nix anfangen.
Die Größeninformatiion ab dem 2. []-Paar gehört zum Typ
des Arrays. Beispiel:void tabellenausgabe2D(int (*T)[3], size_t n) { // alternativ: void tabellenausgabe(int T[][3], size_t n) for(size_t i = 0; i < n; ++i) { for(size_t j = 0; j < 3; ++j) { cout << T[i][j] << ' '; } cout << endl; } cout << endl; }
-
Schau mal in die FAQ unter "dynamische mehrdimansionale Arrays" - bestimmt findest du dort einige Anregungen.
-
das problem liegt bei der zuweisung!
das heisst ich bekomm des array schon als parameter in den konstruktor, dann allerdings muss ich es ja in einen (privaten ) wert der klasse kopieren.
alsoclass meineklasse { ... private: char *privaterzeiger; } //konstruktor meineklasse::meineklasse(char *feld[9][9]) { privatzeiger = feld; //hier kommt der fehler! }der fehler:
cannot convert char*(*)[9] to char * in asseignment
auch wenn ich den privaterzeiger so deklariere:char *privaterzeiger[9][9];gibts ärger
und in den FAQs finde ich leider keine hilfe
-
Du willst deinen Parameter (einen Zeiger auf ein zweidimensionales Feld) deiner Membervariable (einem Zeiger) zuweisen.
Was genau willst du übergeben?
MfG SideWinder
-
den zeiger auf das 2 dimensionale array, damit ich mit dem array in der klasse arbeiten kann.
-
Der Argumenttyp ist char*()[9] (Ein Zeiger auf ein eindimensionales Feld mit dem Elementtyp char) - wie auch der Compiler mitteilt.
mollitz schrieb:
den zeiger auf das 2 dimensionale array, damit ich mit dem array in der klasse arbeiten kann.
Einen Zeiger auf ein zweidimensionales Feld haben wir gar nicht. Du musst du den Zeiger in der Klasse dem Argumenttyp entsprechend deklarieren, also:
char *(*privaterzeiger)[9];