Array-Problem
-
Also, ich hab in einem Programm folgendes Problem
float fFloats[3][4]; float* pFloats[3] = { fFloats[0], fFloats[1], fFloats[2] }; /* //Nun werden die Zeiger in pFloats, welches die Zeiger auf jeweils //eine Zeile von fFloats sind geändert, sprich getauscht. //( will kein memcpy verwenden ) //Wenn ich fertig bin soll das ganze wieder in das Ursprüngliche //Array, allerdings sollen die Änderungen beibehalten werden. //Deswegen: */ fFloats[0] = pFloats[0]; fFloats[1] = pFloats[1]; fFloats[2] = pFloats[2]; /* //Diese Zeilen dort oben funktionieren nicht. //Ich habs auch schon mit mir allen einfallenden Variationen probiert //aber es klappt nicht. */
Ich wäre sehr dankbar, wenn mir jemand eine Lösung für dieses Problem
posten könnte.Danke im voraus für alle antworten.
Beowulf
-
Mir ist zwar nicht ganz klar, was du erreichen willst, aber sowas sollte sich doch wunderbar debuggen lassen.
-
wenn ich zum debuggen käme würde es wohl gehen.
Da das Programm allerdings nicht kompiliert ist das hinfällig.
Diese Zeilen werden nicht kompiliert, dass ist der ganze Fehler!
fFloats[0] = pFloats[0];
fFloats[1] = pFloats[1];
fFloats[2] = pFloats[2];
-
Es gibt keine Zuweisung von float* an float[4]. (Da die eingebauten Array ein Bisschen krüppelig sind, geht nicht einmal float[4] an float[4].)
Ich würde std::copy aus <algorithm> nehmen, das ist immerhin noch ein Bisschen schöner als memcpy -> Lieblingsdoku.
-
operator void, deine Fehlerbeschreibung ist genau mein Compileroutput.
Ich hab mir auch überlegt, ob ich nicht den kompletten Array tauschen sollte,
wie du es vorschlägst, allerdings soll die damit verknüpfte Operation möglichst
schnell sein, und deswegen versuche ich es mit den Zeigern.IMHO zeigen die Pointer doch auf Arrays derselben Größe, und müssten so
austauschbar sein. Gibt es sonst keine andere Möglichkeit es nach dem Prinzip zu machen, wie ich es gepostet habe ohne eine Arrayzeile komplett zu kopieren???? Das sollte doch in C machbar sein.Oder Irre ich mich was den internen Aufbau eines 2-D Arrays betrifft?
Danke für alle Vorschläge.
-
IMHO ja. fFloats (hier Link zur Seite gegen ungarische Notation einfügen) ist nur ein zusammenhängender Block von 3*4 floats und hat an sich nichts mit Zeigern zu tun. Man kann es nur eben implizit in einen Zeiger auf das erste Element konvertieren. Mit = zuweisen kannst du in keinem Fall etwas.
Was hier wirklich helfen könnte, kann ich ohne Zusammenhang nicht schätzen.