Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Array in C++

Chakhi / 6 Antworten / Flachansicht Nickles

hallo Leute,
ich möchte ein Array erstellen damit ich einen Raster darstellen kann! und das mache ich wie folgt:

float grenzen[6];
float xkoord, ykoord;
int xdim,ydim;
int xmin ,xmax ,ymin ,ymax;



// geometrische Grenzen in x und y Richtung auslesen

polydata->GetBounds(grenzen); //(xmin,xmax,ymin,ymax, zmin,zmax).
xmin = grenzen[0] - 20;
xmax = grenzen[1] + 20;
ymin = grenzen[2] - 20;
ymax = grenzen[3] + 20;

// Akkumulator mit Raster 1mm für x-y Ebene einrichten
xdim = xmax - xmin;
ydim = ymax - ymin;
int akkumulator[xdim][ydim];

aber beim Kompilieren kommt immer die Fehlermeldung, dass für akkumulator[][] "konstante Ausdruck erwartet" ist und "error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich"

wie könnte ich das realisieren! warum werden xdim und ydim, die ich oben berechne nicht angenohmen!??

ich bedanke mich im Voraus....

Chrakhan

bei Antwort benachrichtigen
Dreamforger Chakhi „Mehrdimensionales Array in C++ und kleine Korrektur“
Optionen

Mal zur Theorie:
TYPE* var = new TYPE[n];
legt eine Liste von 'n' Variablen vom Typ 'TYPE' an und speichert die erste Adresse in 'var'.
Du kennst das bereits als mit TYPE === int
int* var = new int[n];
Jetzt erstellen wir zur abwechslung mal nicht ein Feld von Ints sondern von Pointern auf Int: TYPE === int*
int** var = new *int[n];
beim 'new' wandert der '*' auf die andere Seite, weil.... abwechlsung gut tut. Keine Ahnung warum.

Der obige Code erstellt also erst ein Array von Pointern auf Int und in jedem dieser Pointer dann ein Array von Ints.

mr.escape Version agiert sehr ähnlich. Er legt zuerst das ganze Array an, wie ganz am Anfang von TW besprochen. Um den Zugriff zu erleichtern legt er in der nächsten Zeile auch ein Array von Pointern an die dann auf bestimmte Positionen im ganzen Array zeigen.

bei Antwort benachrichtigen