Konstruktor im Konstruktor aufrufen



  • 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 ...


Anmelden zum Antworten