Strukturfeld als referenzieller Parameter
-
Hallo!
ich probiere jetzt schon seit langer Zeit. Ich moechte ein das tun, was im Titel steht. Hier mein Code:
// das ist mein Strukturfeld point* bitmapLine; ... // das wird initialisiert point* bitmapLine = new point[MAXLINELENGTH]; // line() bekommt bitmapLine als Referenz, damit ich Werte da rein kopieren kann line ((int)x, (int)y, x + rx2, y + ry2, &bitmapLine); // in line() erstelle ich buffer array p void MCLControl::line( const int x1, const int y1, const int x2, const int y2, point** bL) { ... point* p = new point[MAXLINELENGTH]; // und fuelle es ... for( int i = 0; i != dx; i += sdx ) { p[c].x = i + x1; p[c].y = m * i + y1; if (c == MAXLINELENGTH) { break; } else { c++; } ... for( int i = 0; i != dy; i += sdy ) { p[c].x = m * i + x1; p[c].y = i + y1; if (c == MAXLINELENGTH) { break; } else { c++; } } } // jetzt kopiere ich es in meinen referenz - Parameter memcpy(bL, &p, sizeof(point) * MAXLINELENGTH); // und da gibts nen seg. faultIch habe auch schon versucht in line() mit
bl[c]->x = ...versucht, ging aber irgendwie nicht.
Wenn ich bitmapLine als point**, also als Zeiger auf ein Array, deklariere, kann ich es nicht mit point** bitmapLine initialisieren. Und jetzt weiss ich nicht, was ich noch machen kann. Es muss doch eine Moeglichkeit geben, dass eine Funktion ein Feld von struct's fuellt!
viele Gruesse,
Earl
-
memcpy geht nur eine Indirektionsebene nach "oben", d.h. mit deinem Aufruf kopierst du den Inhalt der Variable p auf bitmapline (bzw. bei deinen Größenangaben auch noch massenhaft Mülldaten in den Bereich hinter bitmapline). Richtig wäre
memcpy(*bL,p,sizeof(point)*MAXLINELENGTH);