QT => Speicherverwaltung


  • Mod

    Containerwidgets übernehmen die Parenteigenschaft in Qt, das es anders nicht so gut geht. Du kannst die widgets aber auch erstmal mit new und this als parent erstellen.



  • "Im Gegensatz zu "normalen" C++, wo auf "new" verzichtet werden sollte..."

    Sorry, wenn du solch einen Bullshit wirklich glaubst, solltest du lieber in einer Scriptsprache oder gar nicht Software entwickeln.



  • Was ist am Verzicht auf direktes 'new' Bullshit? 😕



  • Techel schrieb:

    Was ist am Verzicht auf direktes 'new' Bullshit? 😕

    Dass offenbar überhaupt kein C++ Verständnis vorliegt. Statt solcher unbegründeter "Empfehlungen" wäre Weiterbildung eher angebracht. Nicht bös gemeint, aber eigenes Unwissen sollte nicht als Empfehlung weitergetragen werden.



  • picaschaf, dann bilde dich mal weiter 😉



  • Th69 schrieb:

    picaschaf, dann bilde dich mal weiter 😉

    Mache ich ständig, danke. Solche nutzlosen Kommentare kannst du aber gerne stecken lassen.



  • Es ist allgemein bekannt, dass das Verwenden besitzender, roher Zeiger, wie es QT handhabt, höchstgradig fehleranfällig ist.



  • Techel schrieb:

    Es ist allgemein bekannt, dass das Verwenden besitzender, roher Zeiger, wie es QT handhabt, höchstgradig fehleranfällig ist.

    Wobei man bei QT ja ebend den Besitz abgibt. Daher hat man Massenweise new() ohne jemails ein delete zu sehen.

    Aber es müsste auch sowas gehen:

    QPointer<QWidget> example = newQWidget(this)
    

    Dann hat man mehr das Gefühl von modernem C++ 😉



  • Techel schrieb:

    Es ist allgemein bekannt, dass das Verwenden besitzender, roher Zeiger, wie es QT handhabt, höchstgradig fehleranfällig ist.

    Wenn man nicht weiß was man tut, klar. Nichtsdestotrotz hat das Ownership erstmal nichts damit zu tun wie das Objekt erzeugt wurde, um das ging es mir. Qt bietet selbst ausreichend Smartpointer seit min. Qt 3. Mit C++11 gibt es auch was Brauchbares in der Sprache.



  • Nun QT bildet die Strukturen eben als Baum ab. Daher ist es logisch, dass man keine Deletes sieht, weil am Lebensende der Applikation einfach nur die Wurzel des Baumes entfernt wird, die Parents dann ihre Children ebenfalls entfernen.

    Auch wenn das Konzept vielleicht nicht jedem gefällt, kann ich nur sagen, dass ich noch nie Probleme damit hatte. Ich persönlich empfinde QT als wenig fehleranfällig.

    Abgesehen davon sehe ich das wie Techel: 'new' ist aus meiner Sicht nur noch selten von Nutzen ( QT ist hier die Ausnahme ).
    Für fast alle Anwendungsfälle im reinen C++, die mir bisher untergekommen sind, ist einer der Smartpointer die bessere Wahl. Aber das muss jeder selbst wissen.


Anmelden zum Antworten