Konstruktor im Konstruktor aufrufen
-
Ja, private Init Funktion, wurde schon geschrieben, that's the way to go.
Nur so nebenbei: 'explicit' nicht vergessen (es sei denn du willst dass ein int implizit in ein foo konvertierbar ist).
-
placement new auf this könnt da abhilfe schaffen.
wobei ich das nicht getestet hab
ausserdem schauts schirch aus, da wär die init funktion schöner.foo::foo(int x, int y) { new(this) foo(x); }
-
inp schrieb:
placement new auf this könnt da abhilfe schaffen.
wobei ich das nicht getestet hab
Damit werden sämtliche Basisklassen und Membervariablen nach der Default-Konstruktion nochmal konstruiert. Das provoziert nur Ressourcen-Lecks.
-
LordJaxom schrieb:
inp schrieb:
placement new auf this könnt da abhilfe schaffen.
wobei ich das nicht getestet hab
Damit werden sämtliche Basisklassen und Membervariablen nach der Default-Konstruktion nochmal konstruiert. Das provoziert nur Ressourcen-Lecks.
stimmt, aber im falle das die klasse nicht für vererbung gedacht ist wärs ne lösung.
-
inp schrieb:
LordJaxom schrieb:
inp schrieb:
placement new auf this könnt da abhilfe schaffen.
wobei ich das nicht getestet hab
Damit werden sämtliche Basisklassen und Membervariablen nach der Default-Konstruktion nochmal konstruiert. Das provoziert nur Ressourcen-Lecks.
stimmt, aber im falle das die klasse nicht für vererbung gedacht ist wärs ne lösung.
Wenn es dir egal ist dass der Code strenggenommen falsch ist vielleicht.
Das Problem ist: an der Stelle wo du dein placement new aufrufst ist das Objekt schon konstruiert. Du konstruierst also ein Objekt über ein anderes drüber. Bin mir ziemlich sicher dass das laut Standard undefiniertes Verhalten ist.
-
Die Klasse braucht ja nur einen std::string enthalten, dann kommt es schon völlig ohne Vererbung zu Problemen

-
mmmk, placement new im konstruktor ist böse

-
inp schrieb:
mmmk, placement new im konstruktor ist böse

Sagen wir lieber p-new ist auf this böse

In Exceptional C++ stehen ein paar Seiten dazu und wie böse es sei ...
-
KasF schrieb:
inp schrieb:
mmmk, placement new im konstruktor ist böse

Sagen wir lieber p-new ist auf this böse

In Exceptional C++ stehen ein paar Seiten dazu und wie böse es sei ...les grad more exceptional, muss eh noch das ganze wissen was ich das ganze letzte halbe jahr angelesen hab umsetzen
damit es fest wird 
-
inp schrieb:
more exceptional
Schlummert bei mir immer noch im Regal und wartet darauf von mir gelesen zu werden

-
KasF schrieb:
inp schrieb:
more exceptional
Schlummert bei mir immer noch im Regal und wartet darauf von mir gelesen zu werden

hehe, bei mir schlummert noch das red dragon book (angekratzt), 3d engine design (angekratzt), graphics programming black book (angekratzt
), graphics programming (van dam) 
wenn ich mit all dem fertig bin vergeht sicher noch ein halbes jahr

-
inp schrieb:
hehe, bei mir schlummert noch das red dragon book (angekratzt), 3d engine design (angekratzt), graphics programming black book (angekratzt
), graphics programming (van dam) 
wenn ich mit all dem fertig bin vergeht sicher noch ein halbes jahr

Hehe das kenn ich nur zu gut :). OK Off-Topic, wir hören hier lieber auf ...