Am 04.02.2020 um 13:22 schrieb Konstantin Shegunov:
On Tue, Feb 4, 2020 at 12:15 PM Vitaly Fanaskov <vitaly.fanas...@qt.io <mailto:vitaly.fanas...@qt.io>> wrote:

    I think, if we decide to re-implement parent-child model using smart
    pointers, we would not use unique pointers at all. Even in a methods
    like QObject::makeChild (because ownership is already defined).
    Shared +
    weak pointers make perfect sense here.


You have to be really crafty. Allocating on the stack is a thing, you know, even for parent-child trees, so how do you intend to handle that? Are we again in "forget the stack and new everything" land?

Same as before, in essence a stack object is equivalent to a unique_ptr object.

Thus:

There's no problem with having a QObjects without a parent on the stack/in a unique_ptr.

A QObject with a parent on the stack/unique_ptr is double owned and thus a problem. The severity of that problem is arguably worse with a unique_ptr.

Where my patch improves this situation is that the object ctors taking a parent ptr are all marked with a optional deprecation, thus if you opt into that, you'll get a warning for the second case even for the stack allocation.

And yes this contrary to very crafty code that allocates objects in the right order on the stack, but that has never been the recommend way to use Qt.

daniel

_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to