Zeiger auf mehrdimensionales Array
-
Hi,
ich habe ein Programm bestehend aus mehreren Klassen.
In Klasse 1 hab ich nun ein Array:double array[100][2];dieses Array übergeb ich nun per
Klasse2.SetArray(array);an die 2. Klasse. Aber wie kann ich nun in der 2. Klasse auf die Elemente des Arrays zugreifen??? Ich könnte natürlich in der SetArray Methode das Array per Schleife durchlaufen und in ein neues kopieren:
void SetArray(double array[][2]) { for(int i=0;i<=1;i++) for(int j=0; j<=99;j++) m_newArray[j][i]=array[j][i]; }Aber das ist ja schon ziemlich umständlich! Am besten wäre es doch, einen Pointer auf array zu haben, aber ich hab es nicht hinbekommen dann auf die einzelenen Elemente zuzugreifen! Oder geht es auch anders??
Bin für jeden Tip dankbar!!
Grüße!
-
Kann mir da denn wirklich niemand helfen?? Das ist doch eigentlich ein alltägliches Problem, oder etwa nicht??!
-
Wenn du dass ganze mit pointern machen willst, mußt du auch ersteinmal einen mit
double* array = new double [n][m] Klasse2.SetArray(array[0][0]);allerdings mußt du beim aufruf der einzelnen Zellen beachten, dass alles in einem array steht. Wenn du also array[x][y] haben willst, mußt du array[x*m + y] aufrufen(kann auch etwas anders sein, aber dass musst du dann eben mal ausprobieren). Wenn du das array nicht mehr brauchst, mußt du es allerdings selbst wieder löschen.
PS: falls es mal kracht, bist du über den Speicherbereich hinaus gegangen.
-
Ich glaube double * array = new double[x][y] geht nicht.
Schau mal ein wenig im C++ Forum. Auch im FAQ. Da wird häufiger mal nach mehrdimensionalen Arrays gefragt.
Ansonsten würde ich vorschlagen std::vector<std::vector<double> > zu verwenden.
Auch ist es kein guter Stiel einen Zeiger auf interne Daten einer Klasse für eine andere zugänglich zu machen. Da wäre eine Überarbeitung des Designs fällig.
-
Danke für eure Antworten, hab auch schon in der FAQ gesucht aber leider nix brauchbares gefunden. Aber es kann doch nicht sein dass das ganze so kompliziert ist, man muß doch fast täglich Arrays an andere Klassen übergeben, oder etwa nicht???