Ist das legal: memcpy mit UDT
-
Geo schrieb:
Ein Problem kann es zumindest geben, wenn T strings enthält. Die Stringklasse merkt sich die Anzahl der Objekte, die einen String benutzen. Bei einem memcpy wird diese Anzahl nicht erhöht.
Nein, das ist kein Problem - denn ich erstelle ja keine echte Kopie sondern 'move' den Speicher nur. dh es wird kein Dtor für das alte Objekt aufgerufen.
-
Und wofuer brauchst du dass? Ich glaube dass Man es einfacher machen kann.
-
class Window { Window() { theGlobalWindowList.registerWindow(this); } ~Window() { theGlobalWindowList.unregisterWindow(forgottenThisBeforeMagicMove); }
-
-
itman schrieb:
Und wofuer brauchst du dass? Ich glaube dass Man es einfacher machen kann.
Move statt Copy
Ich will eben ein Objekt Moven anstatt es zu kopieren und das Alte zu zerstören.
-
class Foo { int x; int *y; public: Foo(): x(0). y(&x) {} };
-
Schade das ihr einfach die Codes kommentarlos hinpostet.
Da verstehen wieder nur die Experten was ihr damit sagen wolltest.
-
Schade das ihr einfach die Codes kommentarlos hinpostet.
Diesem Bedauern möchte ich mich anschließen
-
thx @Bashar und volkard
Das bedeutet, dass es mit memcpy nicht geht - denn selbst wenn so eine Situation nur 1mal unter 1 million vorkommt - so ist es immer noch zuviel
Muss ich wohl weiterhin bei mojo bleiben.
-
vv: Ein Exemplar der Klasse Foo von Bashar laesst sich nicht ueber memcpy kopieren, weil dann der Zeiger y ungueltig wird.