Hi..
ich habe folgende Code und möchte ich damit erreichen, dass ich eine Ebene in Feldern unterteile! Ich habe gedacht, ich könnte das über ein (2D)Array realisieren und zwar so, dass ich die Felde auf die Ebene -mit der Länge und Breite von xdim und ydim- mit Raster 1mm einrichte!
und ich möchte auch, dass ich am Anfang die Felde mit dem WErt 0 initialisieren, so dass ich so was erhalte:
0 0.. 0
0......0
........
0......0
und hier ist mein Code, mit der Fehlermeldungen:
{
float grenzen[6];
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 *pAkkum = new int[xdim];
int **ppAkkum = &pAkkum;
int *pData = new int[xdim*ydim];
for ( int i = 0; i
//akkumulator auf 0 initialisieren
for (int x_index = 0; x_index {
for (int y_index = 0; y_index {
ppAkkum[x_index][y_index]=0;
}
}
delete[] pAkkum;
delete[] ppAkkum;
delete[] pData;
}
und jetzt wenn zum Funktionaufruf kommt, wird das Ausführen abgebrochen und kommt die Meldung:
"Benutzerdefinierter Haltepunkt aus der Quellcode aufgerufen bei 77f7f570"
und dann wird das Fenster mit dem Ãœberschrift: " [Anhalten]-[Disassemblierung]" angezeigt.
was soll das alles! was soll ich da überprüfen?
Chakhi
p.s.: Code ist aus der Diskutionen vom vorherigen Posting (Array in C++ ) entstanden...
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
In der jetztigen form ist pAkkum
ein array aus xdim
int werten, in pAkkum
selbst steht die adresse des ersten elementes.
ppAkkum
ist eine zeiger auf einen int zeiger und speichert hier die adresse der variablen pAkkum
, d.h. in ppAkkum
ist die adresse gespeichert, wo die adresse des int arrays steht. Diese adresse (pAkkum
) ist aber ein einzelwert (wahrsch. auf dem stack). Die verwendung von ppAkkum[i]
mit i!=0 ist aber damit unzulässig, da damit auf andere inhalte des stacks zugegriffen wird. ppAkkum
muss vielmehr ein array aus zeigern werden, die jeweils auf ein array aus int werten (spalten) zeigen.
ppAkkum->[adr 1. spalte]-------------------------------------------------------------------------------------------->[1. wert 1. spalte]
         [adr 2. spalte]------------------------------------------------------------------->[1. wert 2. spalte]      [2. wert 1. spalte]
         ...                                                                                [2. wert 2. spalte]      [3. wert 1. spalte]
         [adr vorletzte spalte]------------------------------->[1. wert vorletzte spalte]   [3. wert 2. spalte]      ...
         [adr letzte spalte]---->[1. wert letzte spalte]       [2. wert vorletzte spalte]   ...                      [letzter wert 1. spalte]
                                 [2. wert letzte spalte]       [3. wert vorletzte spalte]   [letzter wert 2. spalte]
                                 [3. wert letzte spalte]       ...
                                 ...                           [letzter wert vorletzte spalte]
                                 [letzter wert letzte spalte]
aus
int *pAkkum = new int[xdim];
int **ppAkkum = &pAkkum;
muss
int **ppAkkum = new *int[xdim];
werden (wie in einer früheren diskussion gezeigt).
delete[] pAkkum;
wird damit auch unnötig.
mr.escape
ps.:Das war ein krampf, bis ich die scheiss einrückungen oben hinbekommen habe!
Danke mr.escape,
natürlich habe ich das was mir in der Diskussion gesagt wurde ausprobiert aber dann bekamm ich folgende 6 Fehlermeldungen und dann habe ich angefangen zu experimentieren:
C:\Programme\....cpp(378) : error C2059: Syntaxfehler : '*'
C:\Programme\....cpp(386) : error C2143: Syntaxfehler : Fehlendes ')' vor ';'
C:\Programme\....cpp(386) : error C2143: Syntaxfehler : Fehlendes ';' vor ')'
C:\Programme\....cpp(386) : error C2143: Syntaxfehler : Fehlendes ';' vor ')'
C:\Programme\....cpp(386) : error C2143: Syntaxfehler : Fehlendes ';' vor ')'
C:\Programme\....cpp(387) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'
in Zeile 378 steht: int **ppAkkum = new *int[xdim];
in Zeile 386 steht: for (int x_index = 0; x_index {
for (int y_index = 0; y_index {
ppAkkum[x_index][y_index]=0;
std::cout }
}
und danach kommen die Deletes!
warum versteht mein Compiler das Sternchen nicht!! und was ist bei den For-Schleidern falsch!
Danke noch mal....
Chakhi
Tja, da hab ich mich von Dreamforger in die lemmingfalle locken lassen und habe ungeprüft behauptet, dass
int **ppAkkum = new *int[xdim];
richtig wäre.
Tatsächlich ist aber
int **ppAkkum = new int*[xdim];
richtig, also "int*" statt "*int". Damit werden auch die ganzen folgefehler ausbleiben.
mr.escape
so habe ich das auch trotz seinem Kommentar gemacht und es funktioniert :) war halt nicht so sicher, aber danke für die Beschtätigung....
Chakhi
Ich freu mich auf den Tag an dem ich das mal auf Anhieb richtig mach :-)
Liegt aber noch ferner Zukunft...